puppet 6.19.1-x86-mingw32 → 7.0.0-x86-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 (440) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +19 -20
  4. data/README.md +1 -1
  5. data/conf/fileserver.conf +5 -10
  6. data/ext/build_defaults.yaml +1 -1
  7. data/ext/osx/file_mapping.yaml +0 -5
  8. data/ext/project_data.yaml +1 -14
  9. data/ext/redhat/puppet.spec.erb +0 -1
  10. data/ext/windows/service/daemon.rb +6 -5
  11. data/install.rb +21 -17
  12. data/lib/puppet.rb +11 -20
  13. data/lib/puppet/application.rb +172 -98
  14. data/lib/puppet/application/device.rb +100 -104
  15. data/lib/puppet/application/filebucket.rb +15 -11
  16. data/lib/puppet/application/ssl.rb +1 -1
  17. data/lib/puppet/configurer.rb +28 -33
  18. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  19. data/lib/puppet/defaults.rb +95 -159
  20. data/lib/puppet/environments.rb +10 -25
  21. data/lib/puppet/face/config.rb +10 -0
  22. data/lib/puppet/face/epp.rb +12 -2
  23. data/lib/puppet/face/facts.rb +66 -6
  24. data/lib/puppet/face/help.rb +1 -1
  25. data/lib/puppet/face/plugin.rb +5 -8
  26. data/lib/puppet/ffi/windows.rb +12 -0
  27. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  28. data/lib/puppet/ffi/windows/constants.rb +404 -0
  29. data/lib/puppet/ffi/windows/functions.rb +628 -0
  30. data/lib/puppet/ffi/windows/structs.rb +338 -0
  31. data/lib/puppet/file_serving/configuration.rb +0 -5
  32. data/lib/puppet/file_serving/configuration/parser.rb +3 -32
  33. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  34. data/lib/puppet/file_serving/mount.rb +1 -2
  35. data/lib/puppet/forge/repository.rb +0 -1
  36. data/lib/puppet/functions/epp.rb +1 -0
  37. data/lib/puppet/functions/inline_epp.rb +1 -0
  38. data/lib/puppet/generate/models/type/type.rb +4 -1
  39. data/lib/puppet/http.rb +22 -13
  40. data/lib/puppet/http/client.rb +164 -114
  41. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  42. data/lib/puppet/http/errors.rb +16 -0
  43. data/lib/puppet/http/external_client.rb +5 -7
  44. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  45. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  46. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  47. data/lib/puppet/http/proxy.rb +137 -0
  48. data/lib/puppet/http/redirector.rb +4 -12
  49. data/lib/puppet/http/resolver.rb +5 -15
  50. data/lib/puppet/http/resolver/server_list.rb +6 -10
  51. data/lib/puppet/http/resolver/settings.rb +4 -7
  52. data/lib/puppet/http/resolver/srv.rb +7 -11
  53. data/lib/puppet/http/response.rb +36 -54
  54. data/lib/puppet/http/response_converter.rb +24 -0
  55. data/lib/puppet/http/response_net_http.rb +42 -0
  56. data/lib/puppet/http/retry_after_handler.rb +4 -13
  57. data/lib/puppet/http/service.rb +12 -26
  58. data/lib/puppet/http/service/ca.rb +11 -22
  59. data/lib/puppet/http/service/compiler.rb +22 -69
  60. data/lib/puppet/http/service/file_server.rb +18 -27
  61. data/lib/puppet/http/service/puppetserver.rb +26 -12
  62. data/lib/puppet/http/service/report.rb +8 -10
  63. data/lib/puppet/http/session.rb +11 -20
  64. data/lib/puppet/{network/http → http}/site.rb +1 -2
  65. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  66. data/lib/puppet/indirector/fact_search.rb +60 -0
  67. data/lib/puppet/indirector/facts/facter.rb +24 -3
  68. data/lib/puppet/indirector/facts/json.rb +27 -0
  69. data/lib/puppet/indirector/facts/rest.rb +3 -22
  70. data/lib/puppet/indirector/facts/yaml.rb +3 -58
  71. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  72. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  73. data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
  74. data/lib/puppet/indirector/file_server.rb +1 -8
  75. data/lib/puppet/indirector/generic_http.rb +0 -11
  76. data/lib/puppet/indirector/json.rb +5 -1
  77. data/lib/puppet/indirector/node/json.rb +8 -0
  78. data/lib/puppet/indirector/node/rest.rb +2 -4
  79. data/lib/puppet/indirector/report/json.rb +34 -0
  80. data/lib/puppet/indirector/report/rest.rb +3 -8
  81. data/lib/puppet/indirector/request.rb +0 -101
  82. data/lib/puppet/indirector/rest.rb +12 -263
  83. data/lib/puppet/module_tool/applications.rb +0 -1
  84. data/lib/puppet/network/authconfig.rb +2 -96
  85. data/lib/puppet/network/authorization.rb +13 -35
  86. data/lib/puppet/network/formats.rb +2 -1
  87. data/lib/puppet/network/http.rb +3 -3
  88. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  89. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  90. data/lib/puppet/network/http/connection.rb +247 -316
  91. data/lib/puppet/network/http/handler.rb +0 -1
  92. data/lib/puppet/network/http_pool.rb +16 -34
  93. data/lib/puppet/node.rb +1 -30
  94. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  95. data/lib/puppet/pal/pal_impl.rb +73 -18
  96. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  97. data/lib/puppet/parser/compiler.rb +0 -198
  98. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  99. data/lib/puppet/parser/resource.rb +0 -69
  100. data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -8
  101. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  102. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  103. data/lib/puppet/pops/issues.rb +0 -5
  104. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  105. data/lib/puppet/pops/model/ast.pp +0 -42
  106. data/lib/puppet/pops/model/ast.rb +0 -290
  107. data/lib/puppet/pops/model/factory.rb +0 -45
  108. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  109. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  110. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  111. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  112. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  113. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  114. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  115. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  116. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  117. data/lib/puppet/pops/types/type_parser.rb +0 -4
  118. data/lib/puppet/pops/types/types.rb +0 -1
  119. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  120. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  121. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  122. data/lib/puppet/provider.rb +0 -13
  123. data/lib/puppet/provider/nameservice.rb +0 -18
  124. data/lib/puppet/provider/package/dpkg.rb +0 -10
  125. data/lib/puppet/provider/package/gem.rb +23 -3
  126. data/lib/puppet/provider/package/pip.rb +0 -1
  127. data/lib/puppet/provider/package/pkg.rb +0 -4
  128. data/lib/puppet/provider/package/portage.rb +1 -1
  129. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  130. data/lib/puppet/provider/service/smf.rb +191 -73
  131. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  132. data/lib/puppet/reference/configuration.rb +2 -0
  133. data/lib/puppet/reference/indirection.rb +1 -1
  134. data/lib/puppet/resource.rb +1 -89
  135. data/lib/puppet/resource/catalog.rb +1 -14
  136. data/lib/puppet/resource/type.rb +3 -119
  137. data/lib/puppet/resource/type_collection.rb +3 -48
  138. data/lib/puppet/runtime.rb +1 -2
  139. data/lib/puppet/settings.rb +45 -33
  140. data/lib/puppet/settings/base_setting.rb +26 -2
  141. data/lib/puppet/settings/integer_setting.rb +17 -0
  142. data/lib/puppet/settings/port_setting.rb +15 -0
  143. data/lib/puppet/settings/priority_setting.rb +5 -4
  144. data/lib/puppet/ssl.rb +10 -6
  145. data/lib/puppet/ssl/base.rb +3 -5
  146. data/lib/puppet/ssl/certificate.rb +0 -6
  147. data/lib/puppet/ssl/certificate_request.rb +1 -12
  148. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  149. data/lib/puppet/ssl/oids.rb +3 -1
  150. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  151. data/lib/puppet/ssl/state_machine.rb +3 -1
  152. data/lib/puppet/ssl/verifier.rb +2 -0
  153. data/lib/puppet/test/test_helper.rb +1 -3
  154. data/lib/puppet/transaction.rb +1 -7
  155. data/lib/puppet/transaction/report.rb +2 -4
  156. data/lib/puppet/type.rb +0 -76
  157. data/lib/puppet/type/file.rb +5 -7
  158. data/lib/puppet/type/file/checksum.rb +1 -1
  159. data/lib/puppet/type/file/source.rb +1 -1
  160. data/lib/puppet/type/filebucket.rb +3 -3
  161. data/lib/puppet/type/package.rb +5 -13
  162. data/lib/puppet/util/execution.rb +0 -11
  163. data/lib/puppet/util/http_proxy.rb +2 -215
  164. data/lib/puppet/util/monkey_patches.rb +0 -46
  165. data/lib/puppet/util/rdoc.rb +0 -7
  166. data/lib/puppet/util/retry_action.rb +1 -1
  167. data/lib/puppet/util/rubygems.rb +5 -1
  168. data/lib/puppet/util/run_mode.rb +9 -1
  169. data/lib/puppet/util/windows.rb +3 -8
  170. data/lib/puppet/util/windows/daemon.rb +360 -0
  171. data/lib/puppet/util/windows/error.rb +1 -0
  172. data/lib/puppet/util/windows/eventlog.rb +4 -9
  173. data/lib/puppet/util/windows/file.rb +8 -242
  174. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  175. data/lib/puppet/util/windows/process.rb +4 -226
  176. data/lib/puppet/util/windows/service.rb +9 -460
  177. data/lib/puppet/util/windows/string.rb +12 -13
  178. data/lib/puppet/util/yaml.rb +0 -22
  179. data/lib/puppet/vendor/require_vendored.rb +0 -1
  180. data/lib/puppet/version.rb +1 -1
  181. data/lib/puppet/x509.rb +5 -1
  182. data/lib/puppet/x509/cert_provider.rb +29 -1
  183. data/locales/puppet.pot +531 -1232
  184. data/man/man5/puppet.conf.5 +37 -97
  185. data/man/man8/puppet-agent.8 +1 -1
  186. data/man/man8/puppet-apply.8 +1 -1
  187. data/man/man8/puppet-catalog.8 +1 -1
  188. data/man/man8/puppet-config.8 +1 -1
  189. data/man/man8/puppet-describe.8 +1 -1
  190. data/man/man8/puppet-device.8 +1 -1
  191. data/man/man8/puppet-doc.8 +1 -1
  192. data/man/man8/puppet-epp.8 +1 -1
  193. data/man/man8/puppet-facts.8 +55 -9
  194. data/man/man8/puppet-filebucket.8 +6 -6
  195. data/man/man8/puppet-generate.8 +1 -1
  196. data/man/man8/puppet-help.8 +1 -1
  197. data/man/man8/puppet-lookup.8 +1 -1
  198. data/man/man8/puppet-module.8 +1 -58
  199. data/man/man8/puppet-node.8 +4 -1
  200. data/man/man8/puppet-parser.8 +1 -1
  201. data/man/man8/puppet-plugin.8 +1 -1
  202. data/man/man8/puppet-report.8 +4 -1
  203. data/man/man8/puppet-resource.8 +1 -1
  204. data/man/man8/puppet-script.8 +1 -1
  205. data/man/man8/puppet-ssl.8 +1 -1
  206. data/man/man8/puppet.8 +2 -2
  207. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  208. data/spec/integration/application/agent_spec.rb +24 -11
  209. data/spec/integration/application/apply_spec.rb +1 -1
  210. data/spec/integration/application/filebucket_spec.rb +16 -16
  211. data/spec/integration/application/help_spec.rb +2 -0
  212. data/spec/integration/application/plugin_spec.rb +23 -1
  213. data/spec/integration/defaults_spec.rb +7 -3
  214. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  215. data/spec/integration/network/http_pool_spec.rb +3 -21
  216. data/spec/integration/parser/catalog_spec.rb +0 -38
  217. data/spec/integration/parser/node_spec.rb +0 -9
  218. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  219. data/spec/integration/type/file_spec.rb +5 -4
  220. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  221. data/spec/integration/util/windows/security_spec.rb +1 -1
  222. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  223. data/spec/lib/puppet_spec/settings.rb +7 -1
  224. data/spec/spec_helper.rb +2 -0
  225. data/spec/unit/agent_spec.rb +0 -2
  226. data/spec/unit/application/config_spec.rb +224 -4
  227. data/spec/unit/application/facts_spec.rb +35 -0
  228. data/spec/unit/application/filebucket_spec.rb +41 -39
  229. data/spec/unit/application/ssl_spec.rb +2 -2
  230. data/spec/unit/certificate_factory_spec.rb +1 -1
  231. data/spec/unit/configurer/downloader_spec.rb +6 -2
  232. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  233. data/spec/unit/configurer_spec.rb +12 -9
  234. data/spec/unit/context/trusted_information_spec.rb +2 -6
  235. data/spec/unit/defaults_spec.rb +77 -28
  236. data/spec/unit/environments_spec.rb +0 -3
  237. data/spec/unit/face/config_spec.rb +27 -32
  238. data/spec/unit/face/facts_spec.rb +4 -0
  239. data/spec/unit/face/plugin_spec.rb +73 -33
  240. data/spec/unit/file_bucket/file_spec.rb +1 -1
  241. data/spec/unit/file_serving/configuration/parser_spec.rb +14 -18
  242. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  243. data/spec/unit/functions/camelcase_spec.rb +1 -1
  244. data/spec/unit/functions/capitalize_spec.rb +1 -1
  245. data/spec/unit/functions/downcase_spec.rb +1 -1
  246. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  247. data/spec/unit/functions/upcase_spec.rb +1 -1
  248. data/spec/unit/http/client_spec.rb +7 -8
  249. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  250. data/spec/unit/http/external_client_spec.rb +4 -4
  251. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  252. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  253. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  254. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  255. data/spec/unit/http/resolver_spec.rb +13 -13
  256. data/spec/unit/http/service/compiler_spec.rb +49 -62
  257. data/spec/unit/http/service/file_server_spec.rb +3 -3
  258. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  259. data/spec/unit/http/service_spec.rb +1 -2
  260. data/spec/unit/http/session_spec.rb +16 -14
  261. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  262. data/spec/unit/indirector/facts/facter_spec.rb +97 -0
  263. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  264. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  265. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  266. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  267. data/spec/unit/indirector/file_server_spec.rb +1 -15
  268. data/spec/unit/indirector/node/json_spec.rb +33 -0
  269. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  270. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  271. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  272. data/spec/unit/indirector/request_spec.rb +0 -264
  273. data/spec/unit/indirector/rest_spec.rb +98 -752
  274. data/spec/unit/network/authconfig_spec.rb +2 -132
  275. data/spec/unit/network/authorization_spec.rb +2 -55
  276. data/spec/unit/network/formats_spec.rb +4 -4
  277. data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -97
  278. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  279. data/spec/unit/network/http/api_spec.rb +10 -0
  280. data/spec/unit/network/http/connection_spec.rb +19 -41
  281. data/spec/unit/network/http/handler_spec.rb +0 -6
  282. data/spec/unit/network/http_pool_spec.rb +0 -4
  283. data/spec/unit/node/environment_spec.rb +33 -21
  284. data/spec/unit/node_spec.rb +2 -54
  285. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  286. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  287. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  288. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  289. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  290. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  291. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  292. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  293. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  294. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  295. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  296. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  297. data/spec/unit/pops/visitor_spec.rb +1 -1
  298. data/spec/unit/provider/nameservice_spec.rb +0 -57
  299. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  300. data/spec/unit/provider/package/gem_spec.rb +32 -0
  301. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  302. data/spec/unit/provider/service/smf_spec.rb +401 -165
  303. data/spec/unit/provider/service/windows_spec.rb +0 -1
  304. data/spec/unit/provider_spec.rb +0 -12
  305. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  306. data/spec/unit/resource/type_collection_spec.rb +2 -22
  307. data/spec/unit/resource_spec.rb +0 -56
  308. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  309. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  310. data/spec/unit/settings/port_setting_spec.rb +31 -0
  311. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  312. data/spec/unit/settings_spec.rb +423 -236
  313. data/spec/unit/ssl/base_spec.rb +36 -3
  314. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  315. data/spec/unit/ssl/certificate_spec.rb +2 -11
  316. data/spec/unit/ssl/ssl_provider_spec.rb +11 -8
  317. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  318. data/spec/unit/ssl/verifier_spec.rb +0 -21
  319. data/spec/unit/transaction/report_spec.rb +0 -2
  320. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  321. data/spec/unit/transaction_spec.rb +45 -79
  322. data/spec/unit/type/file/checksum_spec.rb +6 -6
  323. data/spec/unit/type/file/content_spec.rb +1 -1
  324. data/spec/unit/type/file/ensure_spec.rb +1 -1
  325. data/spec/unit/type/file/mode_spec.rb +1 -1
  326. data/spec/unit/type/file/source_spec.rb +0 -1
  327. data/spec/unit/type/file_spec.rb +12 -6
  328. data/spec/unit/type/package_spec.rb +1 -1
  329. data/spec/unit/type_spec.rb +20 -0
  330. data/spec/unit/util/backups_spec.rb +0 -2
  331. data/spec/unit/util/execution_spec.rb +0 -29
  332. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  333. data/spec/unit/util/rubygems_spec.rb +2 -2
  334. data/spec/unit/util/run_mode_spec.rb +21 -121
  335. data/spec/unit/util/windows/string_spec.rb +1 -3
  336. data/spec/unit/util/yaml_spec.rb +0 -54
  337. data/spec/unit/util_spec.rb +0 -18
  338. metadata +50 -232
  339. data/conf/auth.conf +0 -150
  340. data/lib/puppet/application/cert.rb +0 -76
  341. data/lib/puppet/application/key.rb +0 -4
  342. data/lib/puppet/application/man.rb +0 -4
  343. data/lib/puppet/application/status.rb +0 -4
  344. data/lib/puppet/face/key.rb +0 -16
  345. data/lib/puppet/face/man.rb +0 -145
  346. data/lib/puppet/face/module/build.rb +0 -14
  347. data/lib/puppet/face/module/generate.rb +0 -14
  348. data/lib/puppet/face/module/search.rb +0 -103
  349. data/lib/puppet/face/status.rb +0 -51
  350. data/lib/puppet/indirector/certificate/file.rb +0 -9
  351. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  352. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  353. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  354. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  355. data/lib/puppet/indirector/file_content/http.rb +0 -22
  356. data/lib/puppet/indirector/key/file.rb +0 -46
  357. data/lib/puppet/indirector/key/memory.rb +0 -7
  358. data/lib/puppet/indirector/ssl_file.rb +0 -162
  359. data/lib/puppet/indirector/status.rb +0 -3
  360. data/lib/puppet/indirector/status/local.rb +0 -12
  361. data/lib/puppet/indirector/status/rest.rb +0 -27
  362. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  363. data/lib/puppet/network/auth_config_parser.rb +0 -90
  364. data/lib/puppet/network/authstore.rb +0 -283
  365. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  366. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  367. data/lib/puppet/network/http/base_pool.rb +0 -36
  368. data/lib/puppet/network/http/compression.rb +0 -127
  369. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  370. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  371. data/lib/puppet/network/rest_controller.rb +0 -2
  372. data/lib/puppet/network/rights.rb +0 -210
  373. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  374. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  375. data/lib/puppet/parser/environment_compiler.rb +0 -202
  376. data/lib/puppet/pops/types/enumeration.rb +0 -16
  377. data/lib/puppet/resource/capability_finder.rb +0 -154
  378. data/lib/puppet/rest/errors.rb +0 -15
  379. data/lib/puppet/rest/response.rb +0 -35
  380. data/lib/puppet/rest/route.rb +0 -85
  381. data/lib/puppet/rest/routes.rb +0 -135
  382. data/lib/puppet/ssl/host.rb +0 -505
  383. data/lib/puppet/ssl/key.rb +0 -61
  384. data/lib/puppet/ssl/validator.rb +0 -61
  385. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  386. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  387. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  388. data/lib/puppet/status.rb +0 -40
  389. data/lib/puppet/util/connection.rb +0 -88
  390. data/lib/puppet/util/ssl.rb +0 -83
  391. data/lib/puppet/util/windows/api_types.rb +0 -309
  392. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  393. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  394. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  395. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  396. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  397. data/lib/puppet/vendor/pathspec/README.md +0 -53
  398. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  399. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  400. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  401. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  402. data/man/man8/puppet-key.8 +0 -126
  403. data/man/man8/puppet-man.8 +0 -76
  404. data/man/man8/puppet-status.8 +0 -108
  405. data/spec/integration/application/config_spec.rb +0 -74
  406. data/spec/integration/network/authconfig_spec.rb +0 -256
  407. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  408. data/spec/unit/application/man_spec.rb +0 -52
  409. data/spec/unit/capability_spec.rb +0 -414
  410. data/spec/unit/face/catalog_spec.rb +0 -6
  411. data/spec/unit/face/key_spec.rb +0 -9
  412. data/spec/unit/face/module/search_spec.rb +0 -231
  413. data/spec/unit/face/module_spec.rb +0 -3
  414. data/spec/unit/face/status_spec.rb +0 -9
  415. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  416. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  417. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  418. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  419. data/spec/unit/indirector/key/file_spec.rb +0 -79
  420. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  421. data/spec/unit/indirector/status/local_spec.rb +0 -10
  422. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  423. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  424. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  425. data/spec/unit/network/authstore_spec.rb +0 -422
  426. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  427. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  428. data/spec/unit/network/http/compression_spec.rb +0 -240
  429. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  430. data/spec/unit/network/http_spec.rb +0 -9
  431. data/spec/unit/network/rights_spec.rb +0 -439
  432. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  433. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  434. data/spec/unit/resource/capability_finder_spec.rb +0 -143
  435. data/spec/unit/rest/route_spec.rb +0 -132
  436. data/spec/unit/ssl/host_spec.rb +0 -650
  437. data/spec/unit/ssl/key_spec.rb +0 -173
  438. data/spec/unit/ssl/validator_spec.rb +0 -278
  439. data/spec/unit/status_spec.rb +0 -45
  440. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -1,173 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'puppet/ssl/key'
4
-
5
- describe Puppet::SSL::Key do
6
- before do
7
- @class = Puppet::SSL::Key
8
- end
9
-
10
- it "should be extended with the Indirector module" do
11
- expect(@class.singleton_class).to be_include(Puppet::Indirector)
12
- end
13
-
14
- it "should indirect key" do
15
- expect(@class.indirection.name).to eq(:key)
16
- end
17
-
18
- it "should only support the text format" do
19
- expect(@class.supported_formats).to eq([:s])
20
- end
21
-
22
- describe "when initializing" do
23
- it "should downcase its name" do
24
- expect(@class.new("MyName").name).to eq("myname")
25
- end
26
-
27
- it "should set its password file to the default password file if it is not the CA key" do
28
- Puppet[:passfile] = File.expand_path("/normal/pass")
29
-
30
- key = Puppet::SSL::Key.new("notca")
31
- expect(key.password_file).to eq(Puppet[:passfile])
32
- end
33
- end
34
-
35
- describe "when managing instances" do
36
- before do
37
- @key = @class.new("myname")
38
- end
39
-
40
- it "should have a name attribute" do
41
- expect(@key.name).to eq("myname")
42
- end
43
-
44
- it "should have a content attribute" do
45
- expect(@key).to respond_to(:content)
46
- end
47
-
48
- it "should be able to read keys from disk" do
49
- path = "/my/path"
50
- expect(Puppet::FileSystem).to receive(:read).with(path, :encoding => Encoding::ASCII).and_return("my key")
51
- key = double('key')
52
- expect(OpenSSL::PKey::RSA).to receive(:new).and_return(key)
53
- expect(@key.read(path)).to equal(key)
54
- expect(@key.content).to equal(key)
55
- end
56
-
57
- it "should not try to use the provided password file if the file does not exist" do
58
- allow(Puppet::FileSystem).to receive(:exist?).and_return(false)
59
- @key.password_file = "/path/to/password"
60
-
61
- path = "/my/path"
62
-
63
- allow(Puppet::FileSystem).to receive(:read).with(path, :encoding => Encoding::ASCII).and_return("my key")
64
- expect(OpenSSL::PKey::RSA).to receive(:new).with("my key", nil).and_return(double('key'))
65
- expect(Puppet::FileSystem).not_to receive(:read).with("/path/to/password", :encoding => Encoding::BINARY)
66
-
67
- @key.read(path)
68
- end
69
-
70
- it "should read the key with the password retrieved from the password file if one is provided" do
71
- allow(Puppet::FileSystem).to receive(:exist?).and_return(true)
72
- @key.password_file = "/path/to/password"
73
-
74
- path = "/my/path"
75
- expect(Puppet::FileSystem).to receive(:read).with(path, :encoding => Encoding::ASCII).and_return("my key")
76
- expect(Puppet::FileSystem).to receive(:read).with("/path/to/password", :encoding => Encoding::BINARY).and_return("my password")
77
-
78
- key = double('key')
79
- expect(OpenSSL::PKey::RSA).to receive(:new).with("my key", "my password").and_return(key)
80
- expect(@key.read(path)).to equal(key)
81
- expect(@key.content).to equal(key)
82
- end
83
-
84
- it "should return an empty string when converted to a string with no key" do
85
- expect(@key.to_s).to eq("")
86
- end
87
-
88
- it "should convert the key to pem format when converted to a string" do
89
- key = double('key', :to_pem => "pem")
90
- @key.content = key
91
- expect(@key.to_s).to eq("pem")
92
- end
93
-
94
- it "should have a :to_text method that it delegates to the actual key" do
95
- real_key = double('key')
96
- expect(real_key).to receive(:to_text).and_return("keytext")
97
- @key.content = real_key
98
- expect(@key.to_text).to eq("keytext")
99
- end
100
- end
101
-
102
- describe "when generating the private key" do
103
- before do
104
- @instance = @class.new("test")
105
-
106
- @key = double('key')
107
- end
108
-
109
- it "should create an instance of OpenSSL::PKey::RSA" do
110
- expect(OpenSSL::PKey::RSA).to receive(:new).and_return(@key)
111
-
112
- @instance.generate
113
- end
114
-
115
- it "should create the private key with the keylength specified in the settings" do
116
- Puppet[:keylength] = 513
117
- expect(OpenSSL::PKey::RSA).to receive(:new).with(513).and_return(@key)
118
-
119
- @instance.generate
120
- end
121
-
122
- it "should set the content to the generated key" do
123
- allow(OpenSSL::PKey::RSA).to receive(:new).and_return(@key)
124
- @instance.generate
125
- expect(@instance.content).to equal(@key)
126
- end
127
-
128
- it "should return the generated key" do
129
- allow(OpenSSL::PKey::RSA).to receive(:new).and_return(@key)
130
- expect(@instance.generate).to equal(@key)
131
- end
132
-
133
- it "should return the key in pem format" do
134
- @instance.generate
135
- expect(@instance.content).to receive(:to_pem).and_return("my normal key")
136
- expect(@instance.to_s).to eq("my normal key")
137
- end
138
-
139
- describe "with a password file set" do
140
- it "should return a nil password if the password file does not exist" do
141
- expect(Puppet::FileSystem).to receive(:exist?).with("/path/to/pass").and_return(false)
142
- expect(Puppet::FileSystem).not_to receive(:read).with("/path/to/pass", :encoding => Encoding::BINARY)
143
-
144
- @instance.password_file = "/path/to/pass"
145
-
146
- expect(@instance.password).to be_nil
147
- end
148
-
149
- it "should return the contents of the password file as its password" do
150
- expect(Puppet::FileSystem).to receive(:exist?).with("/path/to/pass").and_return(true)
151
- expect(Puppet::FileSystem).to receive(:read).with("/path/to/pass", :encoding => Encoding::BINARY).and_return("my password")
152
-
153
- @instance.password_file = "/path/to/pass"
154
-
155
- expect(@instance.password).to eq("my password")
156
- end
157
-
158
- it "should export the private key to text using the password" do
159
- @instance.password_file = "/path/to/pass"
160
- allow(@instance).to receive(:password).and_return("my password")
161
-
162
- expect(OpenSSL::PKey::RSA).to receive(:new).and_return(@key)
163
- @instance.generate
164
-
165
- cipher = double('cipher')
166
- expect(OpenSSL::Cipher::DES).to receive(:new).with(:EDE3, :CBC).and_return(cipher)
167
- expect(@key).to receive(:export).with(cipher, "my password").and_return("my encrypted key")
168
-
169
- expect(@instance.to_s).to eq("my encrypted key")
170
- end
171
- end
172
- end
173
- end
@@ -1,278 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet/ssl'
3
- require 'puppet_spec/ssl'
4
-
5
- describe Puppet::SSL::Validator::DefaultValidator, unless: Puppet::Util::Platform.jruby? do
6
- include PuppetSpec::Files
7
- let(:ssl_context) do
8
- double('OpenSSL::X509::StoreContext')
9
- end
10
-
11
- before(:all) do
12
- @pki = PuppetSpec::SSL.create_chained_pki
13
- end
14
-
15
- let(:ca_path) do
16
- Puppet[:ssl_client_ca_auth] || Puppet[:localcacert]
17
- end
18
-
19
- let(:ssl_host) do
20
- double('ssl_host',
21
- :ssl_store => nil,
22
- :certificate => double('cert', :content => nil),
23
- :key => double('key', :content => nil))
24
- end
25
-
26
- subject do
27
- described_class.new(ca_path)
28
- end
29
-
30
- before :each do
31
- allow(subject).to receive(:read_file).and_return(@pki[:root_cert].to_s)
32
- end
33
-
34
- describe '#call' do
35
- before :each do
36
- allow(ssl_context).to receive(:current_cert).and_return(*cert_chain_in_callback_order)
37
- allow(ssl_context).to receive(:chain).and_return(cert_chain)
38
- end
39
-
40
- context 'When pre-verification is not OK' do
41
- context 'and the ssl_context is in an error state' do
42
- let(:root_subject) { @pki[:root_cert].subject.to_utf8 }
43
- let(:code) { OpenSSL::X509::V_ERR_INVALID_CA }
44
-
45
- it 'rejects the connection' do
46
- allow(ssl_context).to receive(:error_string).and_return("Something went wrong")
47
- allow(ssl_context).to receive(:error).and_return(code)
48
-
49
- expect(subject.call(false, ssl_context)).to eq(false)
50
- end
51
-
52
- it 'makes the error available via #verify_errors' do
53
- allow(ssl_context).to receive(:error_string).and_return("Something went wrong")
54
- allow(ssl_context).to receive(:error).and_return(code)
55
-
56
- subject.call(false, ssl_context)
57
- expect(subject.verify_errors).to eq(["Something went wrong for #{root_subject}"])
58
- end
59
-
60
- it 'uses a generic message if error_string is nil' do
61
- allow(ssl_context).to receive(:error_string).and_return(nil)
62
- allow(ssl_context).to receive(:error).and_return(code)
63
-
64
- subject.call(false, ssl_context)
65
- expect(subject.verify_errors).to eq(["OpenSSL error #{code} for #{root_subject}"])
66
- end
67
-
68
- it 'uses 0 for nil error codes' do
69
- allow(ssl_context).to receive(:error_string).and_return("Something went wrong")
70
- allow(ssl_context).to receive(:error).and_return(nil)
71
-
72
- subject.call(false, ssl_context)
73
- expect(subject.verify_errors).to eq(["Something went wrong for #{root_subject}"])
74
- end
75
-
76
- context "when CRL is not yet valid" do
77
- before :each do
78
- allow(ssl_context).to receive(:error_string).and_return("CRL is not yet valid")
79
- allow(ssl_context).to receive(:error).and_return(OpenSSL::X509::V_ERR_CRL_NOT_YET_VALID)
80
- end
81
-
82
- it 'rejects nil CRL' do
83
- allow(ssl_context).to receive(:current_crl).and_return(nil)
84
-
85
- expect(subject.call(false, ssl_context)).to eq(false)
86
- expect(subject.verify_errors).to eq(["CRL is not yet valid"])
87
- end
88
-
89
- it 'includes the CRL issuer in the verify error message' do
90
- crl = OpenSSL::X509::CRL.new
91
- crl.issuer = OpenSSL::X509::Name.new([['CN','Puppet CA: puppetmaster.example.com']])
92
- crl.last_update = Time.now + 24 * 60 * 60
93
- allow(ssl_context).to receive(:current_crl).and_return(crl)
94
-
95
- subject.call(false, ssl_context)
96
- expect(subject.verify_errors).to eq(["CRL is not yet valid for CN=Puppet CA: puppetmaster.example.com"])
97
- end
98
-
99
- it 'rejects CRLs whose last_update time is more than 5 minutes in the future' do
100
- crl = OpenSSL::X509::CRL.new
101
- crl.issuer = OpenSSL::X509::Name.new([['CN','Puppet CA: puppetmaster.example.com']])
102
- crl.last_update = Time.now + 24 * 60 * 60
103
- allow(ssl_context).to receive(:current_crl).and_return(crl)
104
-
105
- expect(subject.call(false, ssl_context)).to eq(false)
106
- end
107
-
108
- it 'accepts CRLs whose last_update time is 10 seconds in the future' do
109
- crl = OpenSSL::X509::CRL.new
110
- crl.issuer = OpenSSL::X509::Name.new([['CN','Puppet CA: puppetmaster.example.com']])
111
- crl.last_update = Time.now + 10
112
- allow(ssl_context).to receive(:current_crl).and_return(crl)
113
-
114
- expect(subject.call(false, ssl_context)).to eq(true)
115
- end
116
- end
117
- end
118
- end
119
-
120
- context 'When pre-verification is OK' do
121
- context 'and the ssl_context is in an error state' do
122
- before :each do
123
- allow(ssl_context).to receive(:error_string).and_return("Something went wrong")
124
- end
125
-
126
- it 'does not make the error available via #verify_errors' do
127
- subject.call(true, ssl_context)
128
- expect(subject.verify_errors).to eq([])
129
- end
130
- end
131
-
132
- context 'and the chain is valid' do
133
- it 'is true for each CA certificate in the chain' do
134
- (cert_chain.length - 1).times do
135
- expect(subject.call(true, ssl_context)).to be_truthy
136
- end
137
- end
138
-
139
- it 'is true for the SSL certificate ending the chain' do
140
- (cert_chain.length - 1).times do
141
- subject.call(true, ssl_context)
142
- end
143
- expect(subject.call(true, ssl_context)).to be_truthy
144
- end
145
- end
146
-
147
- context 'and the chain is invalid' do
148
- before :each do
149
- allow(subject).to receive(:read_file).and_return(@pki[:unrevoked_leaf_node_cert])
150
- end
151
-
152
- it 'is true for each CA certificate in the chain' do
153
- (cert_chain.length - 1).times do
154
- expect(subject.call(true, ssl_context)).to be_truthy
155
- end
156
- end
157
-
158
- it 'is false for the SSL certificate ending the chain' do
159
- (cert_chain.length - 1).times do
160
- subject.call(true, ssl_context)
161
- end
162
- expect(subject.call(true, ssl_context)).to be_falsey
163
- end
164
- end
165
-
166
- context 'an error is raised inside of #call' do
167
- before :each do
168
- expect(ssl_context).to receive(:current_cert).and_raise(StandardError, "BOOM!")
169
- end
170
-
171
- it 'is false' do
172
- expect(subject.call(true, ssl_context)).to be_falsey
173
- end
174
-
175
- it 'makes the error available through #verify_errors' do
176
- subject.call(true, ssl_context)
177
- expect(subject.verify_errors).to eq(["BOOM!"])
178
- end
179
- end
180
- end
181
- end
182
-
183
- describe '#setup_connection' do
184
- it 'updates the connection for verification' do
185
- allow(subject).to receive(:ssl_certificates_are_present?).and_return(true)
186
- connection = double('Net::HTTP')
187
-
188
- allow(connection).to receive(:address).and_return('puppet.com')
189
- expect(connection).to receive(:cert_store=).with(ssl_host.ssl_store)
190
- expect(connection).to receive(:ca_file=).with(ca_path)
191
- expect(connection).to receive(:cert=).with(ssl_host.certificate.content)
192
- expect(connection).to receive(:key=).with(ssl_host.key.content)
193
- expect(connection).to receive(:verify_callback=).with(subject)
194
- expect(connection).to receive(:verify_mode=).with(OpenSSL::SSL::VERIFY_PEER)
195
-
196
- subject.setup_connection(connection, ssl_host)
197
- end
198
-
199
- context 'when no file path is found' do
200
- it 'does not perform verification if certificate files are missing' do
201
- allow(subject).to receive(:ssl_certificates_are_present?).and_return(false)
202
- connection = double('Net::HTTP')
203
-
204
- allow(connection).to receive(:address).and_return('puppet.com')
205
- expect(connection).to receive(:verify_mode=).with(OpenSSL::SSL::VERIFY_NONE)
206
-
207
- subject.setup_connection(connection, ssl_host)
208
- end
209
- end
210
- end
211
-
212
- describe '#valid_peer?' do
213
- before :each do
214
- subject.instance_variable_set(:@peer_certs, cert_chain_in_callback_order)
215
- end
216
-
217
- context 'when the peer presents a valid chain' do
218
- before :each do
219
- allow(subject).to receive(:has_authz_peer_cert).and_return(true)
220
- end
221
-
222
- it 'is true' do
223
- expect(subject.valid_peer?).to be_truthy
224
- end
225
- end
226
-
227
- context 'when the peer presents an invalid chain' do
228
- before :each do
229
- allow(subject).to receive(:has_authz_peer_cert).and_return(false)
230
- end
231
-
232
- it 'is false' do
233
- expect(subject.valid_peer?).to be_falsey
234
- end
235
-
236
- it 'makes a helpful error message available via #verify_errors' do
237
- subject.valid_peer?
238
- expect(subject.verify_errors).to eq([<<END.chomp])
239
- The server presented a SSL certificate chain which does not include a CA listed in the ssl_client_ca_auth file. Authorized Issuers: CN=root-ca-𠜎 Peer Chain: CN=unrevoked-int-node => CN=unrevoked-int-caۿᚠ𠜎 => CN=root-ca-𠜎
240
- END
241
- end
242
- end
243
- end
244
-
245
- describe '#has_authz_peer_cert' do
246
- context 'when the Root CA is listed as authorized' do
247
- it 'returns true when the SSL cert is issued by the Master CA' do
248
- expect(subject.has_authz_peer_cert(cert_chain, [@pki[:root_cert]])).to be_truthy
249
- end
250
-
251
- it 'returns true when the SSL cert is issued by the alternate CA' do
252
- expect(subject.has_authz_peer_cert(cert_chain_alternate, [@pki[:root_cert]])).to be_truthy
253
- end
254
- end
255
-
256
- context 'when one intermediate CA is listed as authorized' do
257
- it 'returns true when the SSL cert is issued by the same intermediate CA' do
258
- expect(subject.has_authz_peer_cert(cert_chain, [@pki[:int_cert]])).to be_truthy
259
- end
260
-
261
- it 'returns false when the SSL cert is issued by a different intermediate CA' do
262
- expect(subject.has_authz_peer_cert(cert_chain_alternate, [@pki[:int_cert]])).to be_falsey
263
- end
264
- end
265
- end
266
-
267
- def cert_chain
268
- [@pki[:int_node_cert], @pki[:int_cert], @pki[:root_cert]]
269
- end
270
-
271
- def cert_chain_alternate
272
- [@pki[:unrevoked_leaf_node_cert], @pki[:leaf_cert], @pki[:revoked_int_cert], @pki[:root_cert]]
273
- end
274
-
275
- def cert_chain_in_callback_order
276
- cert_chain.reverse
277
- end
278
- end