puppet 6.19.1 → 7.0.0

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

Potentially problematic release.


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

Files changed (440) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +19 -20
  4. data/README.md +1 -1
  5. data/conf/fileserver.conf +5 -10
  6. data/ext/build_defaults.yaml +1 -1
  7. data/ext/osx/file_mapping.yaml +0 -5
  8. data/ext/project_data.yaml +1 -14
  9. data/ext/redhat/puppet.spec.erb +0 -1
  10. data/ext/windows/service/daemon.rb +6 -5
  11. data/install.rb +21 -17
  12. data/lib/puppet.rb +11 -20
  13. data/lib/puppet/application.rb +172 -98
  14. data/lib/puppet/application/device.rb +100 -104
  15. data/lib/puppet/application/filebucket.rb +15 -11
  16. data/lib/puppet/application/ssl.rb +1 -1
  17. data/lib/puppet/configurer.rb +28 -33
  18. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  19. data/lib/puppet/defaults.rb +95 -159
  20. data/lib/puppet/environments.rb +10 -25
  21. data/lib/puppet/face/config.rb +10 -0
  22. data/lib/puppet/face/epp.rb +12 -2
  23. data/lib/puppet/face/facts.rb +66 -6
  24. data/lib/puppet/face/help.rb +1 -1
  25. data/lib/puppet/face/plugin.rb +5 -8
  26. data/lib/puppet/ffi/windows.rb +12 -0
  27. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  28. data/lib/puppet/ffi/windows/constants.rb +404 -0
  29. data/lib/puppet/ffi/windows/functions.rb +628 -0
  30. data/lib/puppet/ffi/windows/structs.rb +338 -0
  31. data/lib/puppet/file_serving/configuration.rb +0 -5
  32. data/lib/puppet/file_serving/configuration/parser.rb +3 -32
  33. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  34. data/lib/puppet/file_serving/mount.rb +1 -2
  35. data/lib/puppet/forge/repository.rb +0 -1
  36. data/lib/puppet/functions/epp.rb +1 -0
  37. data/lib/puppet/functions/inline_epp.rb +1 -0
  38. data/lib/puppet/generate/models/type/type.rb +4 -1
  39. data/lib/puppet/http.rb +22 -13
  40. data/lib/puppet/http/client.rb +164 -114
  41. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  42. data/lib/puppet/http/errors.rb +16 -0
  43. data/lib/puppet/http/external_client.rb +5 -7
  44. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  45. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  46. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  47. data/lib/puppet/http/proxy.rb +137 -0
  48. data/lib/puppet/http/redirector.rb +4 -12
  49. data/lib/puppet/http/resolver.rb +5 -15
  50. data/lib/puppet/http/resolver/server_list.rb +6 -10
  51. data/lib/puppet/http/resolver/settings.rb +4 -7
  52. data/lib/puppet/http/resolver/srv.rb +7 -11
  53. data/lib/puppet/http/response.rb +36 -54
  54. data/lib/puppet/http/response_converter.rb +24 -0
  55. data/lib/puppet/http/response_net_http.rb +42 -0
  56. data/lib/puppet/http/retry_after_handler.rb +4 -13
  57. data/lib/puppet/http/service.rb +12 -26
  58. data/lib/puppet/http/service/ca.rb +11 -22
  59. data/lib/puppet/http/service/compiler.rb +22 -69
  60. data/lib/puppet/http/service/file_server.rb +18 -27
  61. data/lib/puppet/http/service/puppetserver.rb +26 -12
  62. data/lib/puppet/http/service/report.rb +8 -10
  63. data/lib/puppet/http/session.rb +11 -20
  64. data/lib/puppet/{network/http → http}/site.rb +1 -2
  65. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  66. data/lib/puppet/indirector/fact_search.rb +60 -0
  67. data/lib/puppet/indirector/facts/facter.rb +24 -3
  68. data/lib/puppet/indirector/facts/json.rb +27 -0
  69. data/lib/puppet/indirector/facts/rest.rb +3 -22
  70. data/lib/puppet/indirector/facts/yaml.rb +3 -58
  71. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  72. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  73. data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
  74. data/lib/puppet/indirector/file_server.rb +1 -8
  75. data/lib/puppet/indirector/generic_http.rb +0 -11
  76. data/lib/puppet/indirector/json.rb +5 -1
  77. data/lib/puppet/indirector/node/json.rb +8 -0
  78. data/lib/puppet/indirector/node/rest.rb +2 -4
  79. data/lib/puppet/indirector/report/json.rb +34 -0
  80. data/lib/puppet/indirector/report/rest.rb +3 -8
  81. data/lib/puppet/indirector/request.rb +0 -101
  82. data/lib/puppet/indirector/rest.rb +12 -263
  83. data/lib/puppet/module_tool/applications.rb +0 -1
  84. data/lib/puppet/network/authconfig.rb +2 -96
  85. data/lib/puppet/network/authorization.rb +13 -35
  86. data/lib/puppet/network/formats.rb +2 -1
  87. data/lib/puppet/network/http.rb +3 -3
  88. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  89. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  90. data/lib/puppet/network/http/connection.rb +247 -316
  91. data/lib/puppet/network/http/handler.rb +0 -1
  92. data/lib/puppet/network/http_pool.rb +16 -34
  93. data/lib/puppet/node.rb +1 -30
  94. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  95. data/lib/puppet/pal/pal_impl.rb +73 -18
  96. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  97. data/lib/puppet/parser/compiler.rb +0 -198
  98. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  99. data/lib/puppet/parser/resource.rb +0 -69
  100. data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -8
  101. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  102. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  103. data/lib/puppet/pops/issues.rb +0 -5
  104. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  105. data/lib/puppet/pops/model/ast.pp +0 -42
  106. data/lib/puppet/pops/model/ast.rb +0 -290
  107. data/lib/puppet/pops/model/factory.rb +0 -45
  108. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  109. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  110. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  111. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  112. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  113. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  114. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  115. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  116. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  117. data/lib/puppet/pops/types/type_parser.rb +0 -4
  118. data/lib/puppet/pops/types/types.rb +0 -1
  119. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  120. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  121. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  122. data/lib/puppet/provider.rb +0 -13
  123. data/lib/puppet/provider/nameservice.rb +0 -18
  124. data/lib/puppet/provider/package/dpkg.rb +0 -10
  125. data/lib/puppet/provider/package/gem.rb +23 -3
  126. data/lib/puppet/provider/package/pip.rb +0 -1
  127. data/lib/puppet/provider/package/pkg.rb +0 -4
  128. data/lib/puppet/provider/package/portage.rb +1 -1
  129. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  130. data/lib/puppet/provider/service/smf.rb +191 -73
  131. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  132. data/lib/puppet/reference/configuration.rb +2 -0
  133. data/lib/puppet/reference/indirection.rb +1 -1
  134. data/lib/puppet/resource.rb +1 -89
  135. data/lib/puppet/resource/catalog.rb +1 -14
  136. data/lib/puppet/resource/type.rb +3 -119
  137. data/lib/puppet/resource/type_collection.rb +3 -48
  138. data/lib/puppet/runtime.rb +1 -2
  139. data/lib/puppet/settings.rb +45 -33
  140. data/lib/puppet/settings/base_setting.rb +26 -2
  141. data/lib/puppet/settings/integer_setting.rb +17 -0
  142. data/lib/puppet/settings/port_setting.rb +15 -0
  143. data/lib/puppet/settings/priority_setting.rb +5 -4
  144. data/lib/puppet/ssl.rb +10 -6
  145. data/lib/puppet/ssl/base.rb +3 -5
  146. data/lib/puppet/ssl/certificate.rb +0 -6
  147. data/lib/puppet/ssl/certificate_request.rb +1 -12
  148. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  149. data/lib/puppet/ssl/oids.rb +3 -1
  150. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  151. data/lib/puppet/ssl/state_machine.rb +3 -1
  152. data/lib/puppet/ssl/verifier.rb +2 -0
  153. data/lib/puppet/test/test_helper.rb +1 -3
  154. data/lib/puppet/transaction.rb +1 -7
  155. data/lib/puppet/transaction/report.rb +2 -4
  156. data/lib/puppet/type.rb +0 -76
  157. data/lib/puppet/type/file.rb +5 -7
  158. data/lib/puppet/type/file/checksum.rb +1 -1
  159. data/lib/puppet/type/file/source.rb +1 -1
  160. data/lib/puppet/type/filebucket.rb +3 -3
  161. data/lib/puppet/type/package.rb +5 -13
  162. data/lib/puppet/util/execution.rb +0 -11
  163. data/lib/puppet/util/http_proxy.rb +2 -215
  164. data/lib/puppet/util/monkey_patches.rb +0 -46
  165. data/lib/puppet/util/rdoc.rb +0 -7
  166. data/lib/puppet/util/retry_action.rb +1 -1
  167. data/lib/puppet/util/rubygems.rb +5 -1
  168. data/lib/puppet/util/run_mode.rb +9 -1
  169. data/lib/puppet/util/windows.rb +3 -8
  170. data/lib/puppet/util/windows/daemon.rb +360 -0
  171. data/lib/puppet/util/windows/error.rb +1 -0
  172. data/lib/puppet/util/windows/eventlog.rb +4 -9
  173. data/lib/puppet/util/windows/file.rb +8 -242
  174. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  175. data/lib/puppet/util/windows/process.rb +4 -226
  176. data/lib/puppet/util/windows/service.rb +9 -460
  177. data/lib/puppet/util/windows/string.rb +12 -13
  178. data/lib/puppet/util/yaml.rb +0 -22
  179. data/lib/puppet/vendor/require_vendored.rb +0 -1
  180. data/lib/puppet/version.rb +1 -1
  181. data/lib/puppet/x509.rb +5 -1
  182. data/lib/puppet/x509/cert_provider.rb +29 -1
  183. data/locales/puppet.pot +531 -1232
  184. data/man/man5/puppet.conf.5 +37 -97
  185. data/man/man8/puppet-agent.8 +1 -1
  186. data/man/man8/puppet-apply.8 +1 -1
  187. data/man/man8/puppet-catalog.8 +1 -1
  188. data/man/man8/puppet-config.8 +1 -1
  189. data/man/man8/puppet-describe.8 +1 -1
  190. data/man/man8/puppet-device.8 +1 -1
  191. data/man/man8/puppet-doc.8 +1 -1
  192. data/man/man8/puppet-epp.8 +1 -1
  193. data/man/man8/puppet-facts.8 +55 -9
  194. data/man/man8/puppet-filebucket.8 +6 -6
  195. data/man/man8/puppet-generate.8 +1 -1
  196. data/man/man8/puppet-help.8 +1 -1
  197. data/man/man8/puppet-lookup.8 +1 -1
  198. data/man/man8/puppet-module.8 +1 -58
  199. data/man/man8/puppet-node.8 +4 -1
  200. data/man/man8/puppet-parser.8 +1 -1
  201. data/man/man8/puppet-plugin.8 +1 -1
  202. data/man/man8/puppet-report.8 +4 -1
  203. data/man/man8/puppet-resource.8 +1 -1
  204. data/man/man8/puppet-script.8 +1 -1
  205. data/man/man8/puppet-ssl.8 +1 -1
  206. data/man/man8/puppet.8 +2 -2
  207. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  208. data/spec/integration/application/agent_spec.rb +24 -11
  209. data/spec/integration/application/apply_spec.rb +1 -1
  210. data/spec/integration/application/filebucket_spec.rb +16 -16
  211. data/spec/integration/application/help_spec.rb +2 -0
  212. data/spec/integration/application/plugin_spec.rb +23 -1
  213. data/spec/integration/defaults_spec.rb +7 -3
  214. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  215. data/spec/integration/network/http_pool_spec.rb +3 -21
  216. data/spec/integration/parser/catalog_spec.rb +0 -38
  217. data/spec/integration/parser/node_spec.rb +0 -9
  218. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  219. data/spec/integration/type/file_spec.rb +5 -4
  220. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  221. data/spec/integration/util/windows/security_spec.rb +1 -1
  222. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  223. data/spec/lib/puppet_spec/settings.rb +7 -1
  224. data/spec/spec_helper.rb +2 -0
  225. data/spec/unit/agent_spec.rb +0 -2
  226. data/spec/unit/application/config_spec.rb +224 -4
  227. data/spec/unit/application/facts_spec.rb +35 -0
  228. data/spec/unit/application/filebucket_spec.rb +41 -39
  229. data/spec/unit/application/ssl_spec.rb +2 -2
  230. data/spec/unit/certificate_factory_spec.rb +1 -1
  231. data/spec/unit/configurer/downloader_spec.rb +6 -2
  232. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  233. data/spec/unit/configurer_spec.rb +12 -9
  234. data/spec/unit/context/trusted_information_spec.rb +2 -6
  235. data/spec/unit/defaults_spec.rb +77 -28
  236. data/spec/unit/environments_spec.rb +0 -3
  237. data/spec/unit/face/config_spec.rb +27 -32
  238. data/spec/unit/face/facts_spec.rb +4 -0
  239. data/spec/unit/face/plugin_spec.rb +73 -33
  240. data/spec/unit/file_bucket/file_spec.rb +1 -1
  241. data/spec/unit/file_serving/configuration/parser_spec.rb +14 -18
  242. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  243. data/spec/unit/functions/camelcase_spec.rb +1 -1
  244. data/spec/unit/functions/capitalize_spec.rb +1 -1
  245. data/spec/unit/functions/downcase_spec.rb +1 -1
  246. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  247. data/spec/unit/functions/upcase_spec.rb +1 -1
  248. data/spec/unit/http/client_spec.rb +7 -8
  249. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  250. data/spec/unit/http/external_client_spec.rb +4 -4
  251. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  252. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  253. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  254. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  255. data/spec/unit/http/resolver_spec.rb +13 -13
  256. data/spec/unit/http/service/compiler_spec.rb +49 -62
  257. data/spec/unit/http/service/file_server_spec.rb +3 -3
  258. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  259. data/spec/unit/http/service_spec.rb +1 -2
  260. data/spec/unit/http/session_spec.rb +16 -14
  261. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  262. data/spec/unit/indirector/facts/facter_spec.rb +97 -0
  263. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  264. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  265. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  266. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  267. data/spec/unit/indirector/file_server_spec.rb +1 -15
  268. data/spec/unit/indirector/node/json_spec.rb +33 -0
  269. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  270. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  271. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  272. data/spec/unit/indirector/request_spec.rb +0 -264
  273. data/spec/unit/indirector/rest_spec.rb +98 -752
  274. data/spec/unit/network/authconfig_spec.rb +2 -132
  275. data/spec/unit/network/authorization_spec.rb +2 -55
  276. data/spec/unit/network/formats_spec.rb +4 -4
  277. data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -97
  278. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  279. data/spec/unit/network/http/api_spec.rb +10 -0
  280. data/spec/unit/network/http/connection_spec.rb +19 -41
  281. data/spec/unit/network/http/handler_spec.rb +0 -6
  282. data/spec/unit/network/http_pool_spec.rb +0 -4
  283. data/spec/unit/node/environment_spec.rb +33 -21
  284. data/spec/unit/node_spec.rb +2 -54
  285. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  286. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  287. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  288. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  289. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  290. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  291. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  292. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  293. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  294. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  295. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  296. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  297. data/spec/unit/pops/visitor_spec.rb +1 -1
  298. data/spec/unit/provider/nameservice_spec.rb +0 -57
  299. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  300. data/spec/unit/provider/package/gem_spec.rb +32 -0
  301. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  302. data/spec/unit/provider/service/smf_spec.rb +401 -165
  303. data/spec/unit/provider/service/windows_spec.rb +0 -1
  304. data/spec/unit/provider_spec.rb +0 -12
  305. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  306. data/spec/unit/resource/type_collection_spec.rb +2 -22
  307. data/spec/unit/resource_spec.rb +0 -56
  308. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  309. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  310. data/spec/unit/settings/port_setting_spec.rb +31 -0
  311. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  312. data/spec/unit/settings_spec.rb +423 -236
  313. data/spec/unit/ssl/base_spec.rb +36 -3
  314. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  315. data/spec/unit/ssl/certificate_spec.rb +2 -11
  316. data/spec/unit/ssl/ssl_provider_spec.rb +11 -8
  317. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  318. data/spec/unit/ssl/verifier_spec.rb +0 -21
  319. data/spec/unit/transaction/report_spec.rb +0 -2
  320. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  321. data/spec/unit/transaction_spec.rb +45 -79
  322. data/spec/unit/type/file/checksum_spec.rb +6 -6
  323. data/spec/unit/type/file/content_spec.rb +1 -1
  324. data/spec/unit/type/file/ensure_spec.rb +1 -1
  325. data/spec/unit/type/file/mode_spec.rb +1 -1
  326. data/spec/unit/type/file/source_spec.rb +0 -1
  327. data/spec/unit/type/file_spec.rb +12 -6
  328. data/spec/unit/type/package_spec.rb +1 -1
  329. data/spec/unit/type_spec.rb +20 -0
  330. data/spec/unit/util/backups_spec.rb +0 -2
  331. data/spec/unit/util/execution_spec.rb +0 -29
  332. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  333. data/spec/unit/util/rubygems_spec.rb +2 -2
  334. data/spec/unit/util/run_mode_spec.rb +21 -121
  335. data/spec/unit/util/windows/string_spec.rb +1 -3
  336. data/spec/unit/util/yaml_spec.rb +0 -54
  337. data/spec/unit/util_spec.rb +0 -18
  338. metadata +50 -176
  339. data/conf/auth.conf +0 -150
  340. data/lib/puppet/application/cert.rb +0 -76
  341. data/lib/puppet/application/key.rb +0 -4
  342. data/lib/puppet/application/man.rb +0 -4
  343. data/lib/puppet/application/status.rb +0 -4
  344. data/lib/puppet/face/key.rb +0 -16
  345. data/lib/puppet/face/man.rb +0 -145
  346. data/lib/puppet/face/module/build.rb +0 -14
  347. data/lib/puppet/face/module/generate.rb +0 -14
  348. data/lib/puppet/face/module/search.rb +0 -103
  349. data/lib/puppet/face/status.rb +0 -51
  350. data/lib/puppet/indirector/certificate/file.rb +0 -9
  351. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  352. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  353. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  354. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  355. data/lib/puppet/indirector/file_content/http.rb +0 -22
  356. data/lib/puppet/indirector/key/file.rb +0 -46
  357. data/lib/puppet/indirector/key/memory.rb +0 -7
  358. data/lib/puppet/indirector/ssl_file.rb +0 -162
  359. data/lib/puppet/indirector/status.rb +0 -3
  360. data/lib/puppet/indirector/status/local.rb +0 -12
  361. data/lib/puppet/indirector/status/rest.rb +0 -27
  362. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  363. data/lib/puppet/network/auth_config_parser.rb +0 -90
  364. data/lib/puppet/network/authstore.rb +0 -283
  365. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  366. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  367. data/lib/puppet/network/http/base_pool.rb +0 -36
  368. data/lib/puppet/network/http/compression.rb +0 -127
  369. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  370. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  371. data/lib/puppet/network/rest_controller.rb +0 -2
  372. data/lib/puppet/network/rights.rb +0 -210
  373. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  374. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  375. data/lib/puppet/parser/environment_compiler.rb +0 -202
  376. data/lib/puppet/pops/types/enumeration.rb +0 -16
  377. data/lib/puppet/resource/capability_finder.rb +0 -154
  378. data/lib/puppet/rest/errors.rb +0 -15
  379. data/lib/puppet/rest/response.rb +0 -35
  380. data/lib/puppet/rest/route.rb +0 -85
  381. data/lib/puppet/rest/routes.rb +0 -135
  382. data/lib/puppet/ssl/host.rb +0 -505
  383. data/lib/puppet/ssl/key.rb +0 -61
  384. data/lib/puppet/ssl/validator.rb +0 -61
  385. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  386. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  387. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  388. data/lib/puppet/status.rb +0 -40
  389. data/lib/puppet/util/connection.rb +0 -88
  390. data/lib/puppet/util/ssl.rb +0 -83
  391. data/lib/puppet/util/windows/api_types.rb +0 -309
  392. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  393. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  394. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  395. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  396. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  397. data/lib/puppet/vendor/pathspec/README.md +0 -53
  398. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  399. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  400. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  401. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  402. data/man/man8/puppet-key.8 +0 -126
  403. data/man/man8/puppet-man.8 +0 -76
  404. data/man/man8/puppet-status.8 +0 -108
  405. data/spec/integration/application/config_spec.rb +0 -74
  406. data/spec/integration/network/authconfig_spec.rb +0 -256
  407. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  408. data/spec/unit/application/man_spec.rb +0 -52
  409. data/spec/unit/capability_spec.rb +0 -414
  410. data/spec/unit/face/catalog_spec.rb +0 -6
  411. data/spec/unit/face/key_spec.rb +0 -9
  412. data/spec/unit/face/module/search_spec.rb +0 -231
  413. data/spec/unit/face/module_spec.rb +0 -3
  414. data/spec/unit/face/status_spec.rb +0 -9
  415. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  416. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  417. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  418. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  419. data/spec/unit/indirector/key/file_spec.rb +0 -79
  420. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  421. data/spec/unit/indirector/status/local_spec.rb +0 -10
  422. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  423. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  424. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  425. data/spec/unit/network/authstore_spec.rb +0 -422
  426. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  427. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  428. data/spec/unit/network/http/compression_spec.rb +0 -240
  429. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  430. data/spec/unit/network/http_spec.rb +0 -9
  431. data/spec/unit/network/rights_spec.rb +0 -439
  432. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  433. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  434. data/spec/unit/resource/capability_finder_spec.rb +0 -143
  435. data/spec/unit/rest/route_spec.rb +0 -132
  436. data/spec/unit/ssl/host_spec.rb +0 -650
  437. data/spec/unit/ssl/key_spec.rb +0 -173
  438. data/spec/unit/ssl/validator_spec.rb +0 -278
  439. data/spec/unit/status_spec.rb +0 -45
  440. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -38,9 +38,8 @@ describe Puppet::SSL::Certificate do
38
38
 
39
39
  describe "when determining a name from a certificate subject" do
40
40
  it "should extract only the CN and not any other components" do
41
- subject = double('sub')
42
- expect(Puppet::Util::SSL).to receive(:cn_from_subject).with(subject).and_return('host.domain.com')
43
- expect(@class.name_from_subject(subject)).to eq('host.domain.com')
41
+ name = OpenSSL::X509::Name.parse('/CN=host.domain.com/L=Portland/ST=Oregon')
42
+ expect(@class.name_from_subject(name)).to eq('host.domain.com')
44
43
  end
45
44
  end
46
45
 
@@ -90,4 +89,38 @@ describe Puppet::SSL::Certificate do
90
89
  }.to raise_error(Puppet::Error, "Unknown signature algorithm 'nonsense'")
91
90
  end
92
91
  end
92
+
93
+ describe "when getting a CN from a subject" do
94
+ def parse(dn)
95
+ OpenSSL::X509::Name.parse(dn)
96
+ end
97
+
98
+ def cn_from(subject)
99
+ @class.name_from_subject(subject)
100
+ end
101
+
102
+ it "should correctly parse a subject containing only a CN" do
103
+ subj = parse('/CN=foo')
104
+ expect(cn_from(subj)).to eq('foo')
105
+ end
106
+
107
+ it "should correctly parse a subject containing other components" do
108
+ subj = parse('/CN=Root CA/OU=Server Operations/O=Example Org')
109
+ expect(cn_from(subj)).to eq('Root CA')
110
+ end
111
+
112
+ it "should correctly parse a subject containing other components with CN not first" do
113
+ subj = parse('/emailAddress=foo@bar.com/CN=foo.bar.com/O=Example Org')
114
+ expect(cn_from(subj)).to eq('foo.bar.com')
115
+ end
116
+
117
+ it "should return nil for a subject with no CN" do
118
+ subj = parse('/OU=Server Operations/O=Example Org')
119
+ expect(cn_from(subj)).to eq(nil)
120
+ end
121
+
122
+ it "should return nil for a bare string" do
123
+ expect(cn_from("/CN=foo")).to eq(nil)
124
+ end
125
+ end
93
126
  end
@@ -1,23 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  require 'puppet/ssl/certificate_request'
4
- require 'puppet/ssl/key'
5
4
 
6
5
  describe Puppet::SSL::CertificateRequest do
7
6
  let(:request) { described_class.new("myname") }
8
- let(:key) {
9
- k = Puppet::SSL::Key.new("myname")
10
- k.generate
11
- k
12
- }
13
-
14
- it "should be extended with the Indirector module" do
15
- expect(described_class.singleton_class).to be_include(Puppet::Indirector)
16
- end
17
-
18
- it "should indirect certificate_request" do
19
- expect(described_class.indirection.name).to eq(:certificate_request)
20
- end
7
+ let(:key) { OpenSSL::PKey::RSA.new(Puppet[:keylength]) }
21
8
 
22
9
  it "should use any provided name as its name" do
23
10
  expect(described_class.new("myname").name).to eq("myname")
@@ -83,14 +70,9 @@ describe Puppet::SSL::CertificateRequest do
83
70
  end
84
71
 
85
72
  describe "when generating", :unless => RUBY_PLATFORM == 'java' do
86
- it "should use the content of the provided key if the key is a Puppet::SSL::Key instance" do
73
+ it "should verify the CSR using the public key associated with the private key" do
87
74
  request.generate(key)
88
- expect(request.content.verify(key.content.public_key)).to be_truthy
89
- end
90
-
91
- it "should set the subject to [CN, name]" do
92
- request.generate(key)
93
- expect(request.content.subject).to eq OpenSSL::X509::Name.new([['CN', key.name]])
75
+ expect(request.content.verify(key.public_key)).to be_truthy
94
76
  end
95
77
 
96
78
  it "should set the version to 0" do
@@ -101,7 +83,7 @@ describe Puppet::SSL::CertificateRequest do
101
83
  it "should set the public key to the provided key's public key" do
102
84
  request.generate(key)
103
85
  # The openssl bindings do not define equality on keys so we use to_s
104
- expect(request.content.public_key.to_s).to eq(key.content.public_key.to_s)
86
+ expect(request.content.public_key.to_s).to eq(key.public_key.to_s)
105
87
  end
106
88
 
107
89
  context "without subjectAltName / dns_alt_names" do
@@ -295,20 +277,20 @@ describe Puppet::SSL::CertificateRequest do
295
277
 
296
278
  it "should sign the csr with the provided key" do
297
279
  request.generate(key)
298
- expect(request.content.verify(key.content.public_key)).to be_truthy
280
+ expect(request.content.verify(key.public_key)).to be_truthy
299
281
  end
300
282
 
301
283
  it "should verify the generated request using the public key" do
302
284
  # Stupid keys don't have a competent == method.
303
285
  expect_any_instance_of(OpenSSL::X509::Request).to receive(:verify) do |public_key|
304
- public_key.to_s == key.content.public_key.to_s
286
+ public_key.to_s == key.public_key.to_s
305
287
  end.and_return(true)
306
288
  request.generate(key)
307
289
  end
308
290
 
309
291
  it "should fail if verification fails" do
310
292
  expect_any_instance_of(OpenSSL::X509::Request).to receive(:verify) do |public_key|
311
- public_key.to_s == key.content.public_key.to_s
293
+ public_key.to_s == key.public_key.to_s
312
294
  end.and_return(false)
313
295
 
314
296
  expect do
@@ -334,8 +316,8 @@ describe Puppet::SSL::CertificateRequest do
334
316
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA256").and_return(false)
335
317
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA1").and_return(true)
336
318
  signer = Puppet::SSL::CertificateSigner.new
337
- signer.sign(csr, key.content)
338
- expect(csr.verify(key.content)).to be_truthy
319
+ signer.sign(csr, key)
320
+ expect(csr.verify(key)).to be_truthy
339
321
  end
340
322
 
341
323
  # Attempts to use SHA512 and SHA384 for signing certificates don't seem to work
@@ -348,8 +330,8 @@ describe Puppet::SSL::CertificateRequest do
348
330
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA1").and_return(false)
349
331
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA512").and_return(true)
350
332
  signer = Puppet::SSL::CertificateSigner.new
351
- signer.sign(csr, key.content)
352
- expect(csr.verify(key.content)).to be_truthy
333
+ signer.sign(csr, key)
334
+ expect(csr.verify(key)).to be_truthy
353
335
  end
354
336
 
355
337
  # Attempts to use SHA512 and SHA384 for signing certificates don't seem to work
@@ -363,8 +345,8 @@ describe Puppet::SSL::CertificateRequest do
363
345
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA512").and_return(false)
364
346
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA384").and_return(true)
365
347
  signer = Puppet::SSL::CertificateSigner.new
366
- signer.sign(csr, key.content)
367
- expect(csr.verify(key.content)).to be_truthy
348
+ signer.sign(csr, key)
349
+ expect(csr.verify(key)).to be_truthy
368
350
  end
369
351
 
370
352
  it "should use SHA224 to sign the csr when SHA256/SHA1/SHA512/SHA384 aren't available" do
@@ -375,8 +357,8 @@ describe Puppet::SSL::CertificateRequest do
375
357
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA384").and_return(false)
376
358
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA224").and_return(true)
377
359
  signer = Puppet::SSL::CertificateSigner.new
378
- signer.sign(csr, key.content)
379
- expect(csr.verify(key.content)).to be_truthy
360
+ signer.sign(csr, key)
361
+ expect(csr.verify(key)).to be_truthy
380
362
  end
381
363
 
382
364
  it "should raise an error if neither SHA256/SHA1/SHA512/SHA384/SHA224 are available" do
@@ -390,16 +372,4 @@ describe Puppet::SSL::CertificateRequest do
390
372
  }.to raise_error(Puppet::Error)
391
373
  end
392
374
  end
393
-
394
- it "should save the CSR" do
395
- csr = Puppet::SSL::CertificateRequest.new("me")
396
- terminus = double('terminus')
397
- allow(terminus).to receive(:validate)
398
- expect(Puppet::SSL::CertificateRequest.indirection).to receive(:prepare).and_return(terminus)
399
- expect(terminus).to receive(:save) do |request|
400
- expect(request.instance).to eq(csr)
401
- expect(request.key).to eq("me")
402
- end
403
- Puppet::SSL::CertificateRequest.indirection.save(csr)
404
- end
405
375
  end
@@ -4,7 +4,7 @@ require 'puppet/certificate_factory'
4
4
  require 'puppet/ssl/certificate'
5
5
 
6
6
  describe Puppet::SSL::Certificate do
7
- let :key do Puppet::SSL::Key.new("test.localdomain").generate end
7
+ let :key do OpenSSL::PKey::RSA.new(Puppet[:keylength]) end
8
8
 
9
9
  # Sign the provided cert so that it can be DER-decoded later
10
10
  def sign_wrapped_cert(cert)
@@ -16,14 +16,6 @@ describe Puppet::SSL::Certificate do
16
16
  @class = Puppet::SSL::Certificate
17
17
  end
18
18
 
19
- it "should be extended with the Indirector module" do
20
- expect(@class.singleton_class).to be_include(Puppet::Indirector)
21
- end
22
-
23
- it "should indirect certificate" do
24
- expect(@class.indirection.name).to eq(:certificate)
25
- end
26
-
27
19
  it "should only support the text format" do
28
20
  expect(@class.supported_formats).to eq([:s])
29
21
  end
@@ -82,8 +74,7 @@ describe Puppet::SSL::Certificate do
82
74
 
83
75
  describe "when managing instances" do
84
76
  def build_cert(opts)
85
- key = Puppet::SSL::Key.new('quux')
86
- key.generate
77
+ key = OpenSSL::PKey::RSA.new(Puppet[:keylength])
87
78
  csr = Puppet::SSL::CertificateRequest.new('quux')
88
79
  csr.generate(key, opts)
89
80
 
@@ -271,14 +271,17 @@ describe Puppet::SSL::SSLProvider do
271
271
  end
272
272
 
273
273
  # This option is only available in openssl 1.1
274
- it 'raises if root cert signature is invalid', if: defined?(OpenSSL::X509::V_FLAG_CHECK_SS_SIGNATURE) do
275
- ca = global_cacerts.first
276
- ca.sign(wrong_key, OpenSSL::Digest::SHA256.new)
277
-
278
- expect {
279
- subject.create_context(**config.merge(cacerts: global_cacerts))
280
- }.to raise_error(Puppet::SSL::CertVerifyError,
281
- "Invalid signature for certificate 'CN=Test CA'")
274
+ # TODO PUP-10689 behavior changed in openssl 1.1.1h
275
+ if Puppet::Util::Package.versioncmp(OpenSSL::OPENSSL_LIBRARY_VERSION.split[1], '1.1.1h') < 0
276
+ it 'raises if root cert signature is invalid', if: defined?(OpenSSL::X509::V_FLAG_CHECK_SS_SIGNATURE) do
277
+ ca = global_cacerts.first
278
+ ca.sign(wrong_key, OpenSSL::Digest::SHA256.new)
279
+
280
+ expect {
281
+ subject.create_context(**config.merge(cacerts: global_cacerts))
282
+ }.to raise_error(Puppet::SSL::CertVerifyError,
283
+ "Invalid signature for certificate 'CN=Test CA'")
284
+ end
282
285
  end
283
286
 
284
287
  it 'raises if intermediate CA signature is invalid' do
@@ -505,7 +505,6 @@ describe Puppet::SSL::StateMachine, unless: Puppet::Util::Platform.jruby? do
505
505
  Puppet[:certificate_revocation] = false
506
506
 
507
507
  expect(cert_provider).not_to receive(:load_crls)
508
- expect(Puppet::Rest::Routes).not_to receive(:get_crls)
509
508
 
510
509
  state.next_state
511
510
 
@@ -6,7 +6,6 @@ describe Puppet::SSL::Verifier do
6
6
  let(:host) { 'example.com' }
7
7
  let(:http) { Net::HTTP.new(host) }
8
8
  let(:verifier) { described_class.new(host, ssl_context) }
9
- let(:adapter) { Puppet::SSL::VerifierAdapter.new(Puppet::SSL::Validator::DefaultValidator.new) }
10
9
 
11
10
  context '#reusable?' do
12
11
  it 'Verifiers with the same ssl_context are reusable' do
@@ -16,26 +15,6 @@ describe Puppet::SSL::Verifier do
16
15
  it 'Verifiers with different ssl_contexts are not reusable' do
17
16
  expect(verifier).to_not be_reusable(described_class.new(host, Puppet::SSL::SSLContext.new))
18
17
  end
19
-
20
- it 'Verifier is not reusable with VerifierAdapter' do
21
- expect(verifier).to_not be_reusable(adapter)
22
- end
23
-
24
- it 'VerifierAdapter is not reusable with Verifier' do
25
- expect(adapter).to_not be_reusable(verifier)
26
- end
27
-
28
- it 'VerifierAdapters with the same class of Validator are reusable' do
29
- expect(
30
- adapter
31
- ).to be_reusable(Puppet::SSL::VerifierAdapter.new(Puppet::SSL::Validator::DefaultValidator.new))
32
- end
33
-
34
- it 'VerifierAdapters with different classes of Validators are not reusable' do
35
- expect(
36
- adapter
37
- ).to_not be_reusable(Puppet::SSL::VerifierAdapter.new(Puppet::SSL::Validator::NoValidator.new))
38
- end
39
18
  end
40
19
 
41
20
  context '#setup_connection' do
@@ -675,7 +675,6 @@ Version:
675
675
  report.code_id = "some code id"
676
676
  report.catalog_uuid = "some catalog uuid"
677
677
  report.cached_catalog_status = "not_used"
678
- report.master_used = "test:000"
679
678
  report.server_used = "test:000"
680
679
  report.add_resource_status(status)
681
680
  report.transaction_completed = true
@@ -694,7 +693,6 @@ Version:
694
693
  report.code_id = "some code id"
695
694
  report.catalog_uuid = "some catalog uuid"
696
695
  report.cached_catalog_status = "not_used"
697
- report.master_used = "test:000"
698
696
  report.server_used = "test:000"
699
697
  report.add_resource_status(status)
700
698
  report.transaction_completed = true
@@ -612,14 +612,14 @@ describe Puppet::Transaction::ResourceHarness do
612
612
  allow_any_instance_of(Puppet::Transaction::Event).to receive(:corrective_change).and_return(true)
613
613
  status = @harness.evaluate(resource)
614
614
  sync_event = status.events[0]
615
- expect(sync_event.message).to match(/content changed '{md5}[0-9a-f]+' to '{md5}[0-9a-f]+' \(corrective\)/)
615
+ expect(sync_event.message).to match(/content changed '{sha256}[0-9a-f]+' to '{sha256}[0-9a-f]+' \(corrective\)/)
616
616
  end
617
617
 
618
618
  it "contains no modifier when intentional change" do
619
619
  allow_any_instance_of(Puppet::Transaction::Event).to receive(:corrective_change).and_return(false)
620
620
  status = @harness.evaluate(resource)
621
621
  sync_event = status.events[0]
622
- expect(sync_event.message).to match(/content changed '{md5}[0-9a-f]+' to '{md5}[0-9a-f]+'$/)
622
+ expect(sync_event.message).to match(/content changed '{sha256}[0-9a-f]+' to '{sha256}[0-9a-f]+'$/)
623
623
  end
624
624
  end
625
625
  end
@@ -598,115 +598,81 @@ describe Puppet::Transaction do
598
598
  transaction.prefetch_if_necessary(resource)
599
599
  end
600
600
 
601
- it "should not rescue SystemExit without future_features flag" do
602
- Puppet.settings[:future_features] = false
601
+ it "should not rescue SystemExit" do
603
602
  expect(resource.provider.class).to receive(:prefetch).and_raise(SystemExit, "SystemMessage")
604
603
  expect { transaction.prefetch_if_necessary(resource) }.to raise_error(SystemExit, "SystemMessage")
605
604
  end
606
605
 
607
- it "should not rescue SystemExit with future_features flag" do
608
- Puppet.settings[:future_features] = true
609
- expect(resource.provider.class).to receive(:prefetch).and_raise(SystemExit, "SystemMessage")
610
- expect { transaction.prefetch_if_necessary(resource) }.to raise_error(SystemExit, "SystemMessage")
611
- end
612
-
613
- it "should rescue LoadError without future_features flag" do
614
- Puppet.settings[:future_features] = false
615
- expect(resource.provider.class).to receive(:prefetch).and_raise(LoadError, "LoadMessage")
616
- expect { transaction.prefetch_if_necessary(resource) }.not_to raise_error
617
- end
618
-
619
- it "should rescue LoadError with future_features flag" do
620
- Puppet.settings[:future_features] = true
606
+ it "should mark resources as failed when prefetching raises LoadError" do
621
607
  expect(resource.provider.class).to receive(:prefetch).and_raise(LoadError, "LoadMessage")
622
- expect { transaction.prefetch_if_necessary(resource) }.not_to raise_error
608
+ transaction.prefetch_if_necessary(resource)
609
+ expect(transaction.prefetched_providers[:package][:pkgng]).to be_truthy
623
610
  end
624
611
 
625
- describe "and prefetching fails" do
612
+ describe "and prefetching raises Puppet::Error" do
626
613
  before :each do
627
614
  expect(resource.provider.class).to receive(:prefetch).and_raise(Puppet::Error, "message")
628
615
  end
629
616
 
630
- context "without future_features flag" do
631
- before :each do
632
- Puppet.settings[:future_features] = false
633
- end
634
-
635
- it "should not rescue prefetch executions" do
636
- expect { transaction.prefetch_if_necessary(resource) }.to raise_error(Puppet::Error)
637
- end
617
+ it "should rescue prefetch executions" do
618
+ transaction.prefetch_if_necessary(resource)
638
619
 
639
- it "should log the exception during prefetch" do
640
- expect(Puppet).to receive(:log_exception).with(anything, "Could not prefetch package provider 'pkgng': message")
641
- expect { transaction.prefetch_if_necessary(resource) }.to raise_error(Puppet::Error, "message")
642
- end
620
+ expect(transaction.prefetched_providers[:package][:pkgng]).to be_truthy
643
621
  end
644
622
 
645
- context "with future_features flag" do
646
- before :each do
647
- Puppet.settings[:future_features] = true
648
- end
623
+ it "should mark resources as failed", :unless => RUBY_PLATFORM == 'java' do
624
+ transaction.evaluate
649
625
 
650
- it "should rescue prefetch executions" do
651
- transaction.prefetch_if_necessary(resource)
626
+ expect(transaction.resource_status(resource).failed?).to be_truthy
627
+ end
652
628
 
653
- expect(transaction.prefetched_providers[:package][:pkgng]).to be_truthy
654
- end
629
+ it "should mark a provider that has failed prefetch" do
630
+ transaction.prefetch_if_necessary(resource)
655
631
 
656
- it "should mark resources as failed", :unless => RUBY_PLATFORM == 'java' do
657
- transaction.evaluate
632
+ expect(transaction.prefetch_failed_providers[:package][:pkgng]).to be_truthy
633
+ end
658
634
 
659
- expect(transaction.resource_status(resource).failed?).to be_truthy
635
+ describe "and new resources are generated" do
636
+ let(:generator) { Puppet::Type.type(:notify).new :title => "generator" }
637
+ let(:generated) do
638
+ %w[a b c].map { |name| Puppet::Type.type(:package).new :title => "foo", :name => name, :provider => :apt }
660
639
  end
661
640
 
662
- it "should mark a provider that has failed prefetch" do
663
- transaction.prefetch_if_necessary(resource)
664
-
665
- expect(transaction.prefetch_failed_providers[:package][:pkgng]).to be_truthy
641
+ before :each do
642
+ catalog.add_resource generator
643
+ allow(generator).to receive(:generate).and_return(generated)
644
+ allow(catalog).to receive(:container_of).and_return(generator)
666
645
  end
667
646
 
668
- describe "and new resources are generated" do
669
- let(:generator) { Puppet::Type.type(:notify).new :title => "generator" }
670
- let(:generated) do
671
- %w[a b c].map { |name| Puppet::Type.type(:package).new :title => "foo", :name => name, :provider => :apt }
672
- end
673
-
674
- before :each do
675
- catalog.add_resource generator
676
- allow(generator).to receive(:generate).and_return(generated)
677
- allow(catalog).to receive(:container_of).and_return(generator)
678
- end
679
-
680
- it "should not evaluate resources with a failed provider, even if the prefetch is rescued" do
681
- #Only the generator resource should be applied, all the other resources are failed, and skipped.
682
- catalog.remove_resource resource2
683
- expect(transaction).to receive(:apply).once
647
+ it "should not evaluate resources with a failed provider, even if the prefetch is rescued" do
648
+ #Only the generator resource should be applied, all the other resources are failed, and skipped.
649
+ catalog.remove_resource resource2
650
+ expect(transaction).to receive(:apply).once
684
651
 
685
- transaction.evaluate
686
- end
652
+ transaction.evaluate
653
+ end
687
654
 
688
- it "should not fail other resources added after the failing resource", :unless => RUBY_PLATFORM == 'java' do
689
- new_resource = Puppet::Type.type(:notify).new :name => "baz"
690
- catalog.add_resource(new_resource)
655
+ it "should not fail other resources added after the failing resource", :unless => RUBY_PLATFORM == 'java' do
656
+ new_resource = Puppet::Type.type(:notify).new :name => "baz"
657
+ catalog.add_resource(new_resource)
691
658
 
692
- transaction.evaluate
659
+ transaction.evaluate
693
660
 
694
- expect(transaction.resource_status(new_resource).failed?).to be_falsey
695
- end
661
+ expect(transaction.resource_status(new_resource).failed?).to be_falsey
662
+ end
696
663
 
697
- it "should fail other resources that require the failing resource" do
698
- new_resource = Puppet::Type.type(:notify).new(:name => "baz", :require => resource)
699
- catalog.add_resource(new_resource)
664
+ it "should fail other resources that require the failing resource" do
665
+ new_resource = Puppet::Type.type(:notify).new(:name => "baz", :require => resource)
666
+ catalog.add_resource(new_resource)
700
667
 
701
- catalog.remove_resource resource2
702
- expect(transaction).to receive(:apply).once
668
+ catalog.remove_resource resource2
669
+ expect(transaction).to receive(:apply).once
703
670
 
704
- transaction.evaluate
671
+ transaction.evaluate
705
672
 
706
- expect(transaction.resource_status(resource).failed?).to be_truthy
707
- expect(transaction.resource_status(new_resource).dependency_failed?).to be_truthy
708
- expect(transaction.skip?(new_resource)).to be_truthy
709
- end
673
+ expect(transaction.resource_status(resource).failed?).to be_truthy
674
+ expect(transaction.resource_status(new_resource).dependency_failed?).to be_truthy
675
+ expect(transaction.skip?(new_resource)).to be_truthy
710
676
  end
711
677
  end
712
678
  end