puppet 6.13.0-x86-mingw32 → 6.18.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 (461) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -7
  3. data/CONTRIBUTING.md +7 -13
  4. data/Gemfile +4 -2
  5. data/Gemfile.lock +36 -32
  6. data/README.md +17 -24
  7. data/ext/windows/service/daemon.rb +3 -3
  8. data/lib/puppet.rb +33 -9
  9. data/lib/puppet/agent.rb +20 -14
  10. data/lib/puppet/application/agent.rb +26 -17
  11. data/lib/puppet/application/apply.rb +18 -20
  12. data/lib/puppet/application/describe.rb +7 -5
  13. data/lib/puppet/application/device.rb +2 -2
  14. data/lib/puppet/application/filebucket.rb +19 -15
  15. data/lib/puppet/application/lookup.rb +16 -4
  16. data/lib/puppet/application/plugin.rb +1 -0
  17. data/lib/puppet/application/ssl.rb +4 -4
  18. data/lib/puppet/configurer.rb +58 -57
  19. data/lib/puppet/configurer/downloader.rb +31 -10
  20. data/lib/puppet/configurer/plugin_handler.rb +10 -1
  21. data/lib/puppet/confine.rb +2 -2
  22. data/lib/puppet/confine/any.rb +1 -1
  23. data/lib/puppet/context/trusted_information.rb +14 -8
  24. data/lib/puppet/daemon.rb +13 -27
  25. data/lib/puppet/defaults.rb +92 -12
  26. data/lib/puppet/environments.rb +4 -5
  27. data/lib/puppet/face/facts.rb +1 -1
  28. data/lib/puppet/face/help.rb +29 -3
  29. data/lib/puppet/face/module/search.rb +5 -0
  30. data/lib/puppet/face/plugin.rb +2 -2
  31. data/lib/puppet/feature/base.rb +1 -1
  32. data/lib/puppet/file_serving/http_metadata.rb +14 -2
  33. data/lib/puppet/file_serving/metadata.rb +4 -1
  34. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  35. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  36. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  37. data/lib/puppet/file_serving/terminus_selector.rb +7 -8
  38. data/lib/puppet/file_system/file_impl.rb +17 -13
  39. data/lib/puppet/file_system/uniquefile.rb +12 -16
  40. data/lib/puppet/forge.rb +1 -1
  41. data/lib/puppet/forge/cache.rb +1 -1
  42. data/lib/puppet/forge/repository.rb +4 -7
  43. data/lib/puppet/functions/call.rb +1 -1
  44. data/lib/puppet/functions/eyaml_lookup_key.rb +13 -8
  45. data/lib/puppet/functions/filter.rb +1 -0
  46. data/lib/puppet/functions/lstrip.rb +4 -4
  47. data/lib/puppet/functions/reduce.rb +2 -4
  48. data/lib/puppet/functions/reverse_each.rb +1 -1
  49. data/lib/puppet/functions/rstrip.rb +4 -4
  50. data/lib/puppet/functions/step.rb +1 -1
  51. data/lib/puppet/functions/strip.rb +4 -4
  52. data/lib/puppet/gettext/config.rb +5 -5
  53. data/lib/puppet/gettext/module_translations.rb +4 -4
  54. data/lib/puppet/http.rb +3 -0
  55. data/lib/puppet/http/client.rb +263 -73
  56. data/lib/puppet/http/external_client.rb +90 -0
  57. data/lib/puppet/http/redirector.rb +43 -7
  58. data/lib/puppet/http/resolver.rb +46 -3
  59. data/lib/puppet/http/resolver/server_list.rb +76 -16
  60. data/lib/puppet/http/resolver/settings.rb +23 -3
  61. data/lib/puppet/http/resolver/srv.rb +29 -3
  62. data/lib/puppet/http/response.rb +87 -1
  63. data/lib/puppet/http/retry_after_handler.rb +39 -0
  64. data/lib/puppet/http/service.rb +97 -12
  65. data/lib/puppet/http/service/ca.rb +76 -14
  66. data/lib/puppet/http/service/compiler.rb +249 -16
  67. data/lib/puppet/http/service/file_server.rb +141 -20
  68. data/lib/puppet/http/service/report.rb +47 -17
  69. data/lib/puppet/http/session.rb +96 -7
  70. data/lib/puppet/indirector.rb +1 -1
  71. data/lib/puppet/indirector/catalog/rest.rb +34 -0
  72. data/lib/puppet/indirector/exec.rb +1 -1
  73. data/lib/puppet/indirector/facts/facter.rb +3 -3
  74. data/lib/puppet/indirector/facts/rest.rb +42 -0
  75. data/lib/puppet/indirector/file_bucket_file/rest.rb +48 -0
  76. data/lib/puppet/indirector/file_content/http.rb +5 -0
  77. data/lib/puppet/indirector/file_content/rest.rb +30 -0
  78. data/lib/puppet/indirector/file_metadata/http.rb +28 -8
  79. data/lib/puppet/indirector/file_metadata/rest.rb +52 -0
  80. data/lib/puppet/indirector/hiera.rb +4 -0
  81. data/lib/puppet/indirector/indirection.rb +1 -1
  82. data/lib/puppet/indirector/node/rest.rb +24 -0
  83. data/lib/puppet/indirector/report/processor.rb +2 -2
  84. data/lib/puppet/indirector/report/rest.rb +19 -0
  85. data/lib/puppet/indirector/report/yaml.rb +23 -0
  86. data/lib/puppet/indirector/request.rb +1 -1
  87. data/lib/puppet/indirector/rest.rb +12 -0
  88. data/lib/puppet/indirector/status/rest.rb +18 -0
  89. data/lib/puppet/loaders.rb +6 -0
  90. data/lib/puppet/metatype/manager.rb +80 -80
  91. data/lib/puppet/module.rb +1 -2
  92. data/lib/puppet/network/format_support.rb +2 -2
  93. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  94. data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
  95. data/lib/puppet/network/http/base_pool.rb +7 -2
  96. data/lib/puppet/network/http/compression.rb +7 -0
  97. data/lib/puppet/network/http/connection.rb +2 -0
  98. data/lib/puppet/network/http/connection_adapter.rb +184 -0
  99. data/lib/puppet/network/http/nocache_pool.rb +1 -0
  100. data/lib/puppet/network/http/pool.rb +8 -5
  101. data/lib/puppet/network/http/route.rb +2 -2
  102. data/lib/puppet/network/http_pool.rb +2 -1
  103. data/lib/puppet/node/environment.rb +22 -5
  104. data/lib/puppet/pal/catalog_compiler.rb +5 -0
  105. data/lib/puppet/pal/pal_impl.rb +30 -31
  106. data/lib/puppet/parameter.rb +1 -1
  107. data/lib/puppet/parser/ast/leaf.rb +5 -5
  108. data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
  109. data/lib/puppet/parser/compiler.rb +43 -33
  110. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
  111. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
  112. data/lib/puppet/parser/environment_compiler.rb +4 -1
  113. data/lib/puppet/parser/functions.rb +18 -9
  114. data/lib/puppet/parser/functions/create_resources.rb +11 -7
  115. data/lib/puppet/parser/functions/filter.rb +1 -0
  116. data/lib/puppet/parser/resource.rb +3 -2
  117. data/lib/puppet/parser/resource/param.rb +6 -0
  118. data/lib/puppet/parser/type_loader.rb +2 -2
  119. data/lib/puppet/pops/adaptable.rb +7 -13
  120. data/lib/puppet/pops/adapters.rb +8 -4
  121. data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
  122. data/lib/puppet/pops/issues.rb +5 -0
  123. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
  124. data/lib/puppet/pops/loaders.rb +24 -15
  125. data/lib/puppet/pops/lookup/context.rb +1 -1
  126. data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
  127. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
  128. data/lib/puppet/pops/types/iterable.rb +34 -8
  129. data/lib/puppet/pops/validation/checker4_0.rb +29 -15
  130. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  131. data/lib/puppet/provider/file/windows.rb +1 -1
  132. data/lib/puppet/provider/group/groupadd.rb +9 -4
  133. data/lib/puppet/provider/group/windows_adsi.rb +3 -3
  134. data/lib/puppet/provider/package/aix.rb +17 -2
  135. data/lib/puppet/provider/package/apt.rb +98 -1
  136. data/lib/puppet/provider/package/aptitude.rb +1 -1
  137. data/lib/puppet/provider/package/dnfmodule.rb +61 -14
  138. data/lib/puppet/provider/package/gem.rb +45 -9
  139. data/lib/puppet/provider/package/pacman.rb +2 -5
  140. data/lib/puppet/provider/package/pip.rb +143 -48
  141. data/lib/puppet/provider/package/pip3.rb +0 -2
  142. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  143. data/lib/puppet/provider/package/pkgng.rb +16 -4
  144. data/lib/puppet/provider/package/portage.rb +2 -2
  145. data/lib/puppet/provider/package/puppet_gem.rb +11 -2
  146. data/lib/puppet/provider/package/rpm.rb +6 -213
  147. data/lib/puppet/provider/package/yum.rb +100 -20
  148. data/lib/puppet/provider/package/zypper.rb +62 -1
  149. data/lib/puppet/provider/service/systemd.rb +22 -4
  150. data/lib/puppet/provider/service/windows.rb +23 -7
  151. data/lib/puppet/provider/user/aix.rb +1 -1
  152. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  153. data/lib/puppet/provider/user/useradd.rb +16 -5
  154. data/lib/puppet/provider/user/windows_adsi.rb +18 -1
  155. data/lib/puppet/reports/http.rb +15 -9
  156. data/lib/puppet/resource.rb +2 -1
  157. data/lib/puppet/resource/type.rb +8 -0
  158. data/lib/puppet/resource/type_collection.rb +20 -16
  159. data/lib/puppet/runtime.rb +31 -1
  160. data/lib/puppet/settings.rb +3 -1
  161. data/lib/puppet/settings/http_extra_headers_setting.rb +25 -0
  162. data/lib/puppet/ssl.rb +1 -0
  163. data/lib/puppet/ssl/host.rb +4 -4
  164. data/lib/puppet/ssl/oids.rb +1 -0
  165. data/lib/puppet/ssl/ssl_context.rb +2 -2
  166. data/lib/puppet/ssl/ssl_provider.rb +20 -1
  167. data/lib/puppet/ssl/state_machine.rb +81 -35
  168. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  169. data/lib/puppet/ssl/verifier_adapter.rb +9 -1
  170. data/lib/puppet/test/test_helper.rb +21 -14
  171. data/lib/puppet/transaction.rb +2 -2
  172. data/lib/puppet/transaction/persistence.rb +1 -1
  173. data/lib/puppet/transaction/report.rb +3 -3
  174. data/lib/puppet/trusted_external.rb +29 -1
  175. data/lib/puppet/type.rb +21 -8
  176. data/lib/puppet/type/file.rb +51 -13
  177. data/lib/puppet/type/file/checksum.rb +4 -4
  178. data/lib/puppet/type/file/source.rb +75 -64
  179. data/lib/puppet/type/notify.rb +2 -2
  180. data/lib/puppet/type/package.rb +41 -3
  181. data/lib/puppet/type/service.rb +59 -8
  182. data/lib/puppet/type/user.rb +19 -29
  183. data/lib/puppet/util.rb +41 -3
  184. data/lib/puppet/util/at_fork.rb +1 -1
  185. data/lib/puppet/util/autoload.rb +13 -25
  186. data/lib/puppet/util/character_encoding.rb +9 -5
  187. data/lib/puppet/util/checksums.rb +19 -4
  188. data/lib/puppet/util/execution.rb +2 -2
  189. data/lib/puppet/util/fileparsing.rb +2 -2
  190. data/lib/puppet/util/instance_loader.rb +14 -10
  191. data/lib/puppet/util/log/destinations.rb +1 -10
  192. data/lib/puppet/util/package/version/debian.rb +175 -0
  193. data/lib/puppet/util/package/version/gem.rb +15 -0
  194. data/lib/puppet/util/package/version/pip.rb +167 -0
  195. data/lib/puppet/util/package/version/range.rb +53 -0
  196. data/lib/puppet/util/package/version/range/eq.rb +14 -0
  197. data/lib/puppet/util/package/version/range/gt.rb +14 -0
  198. data/lib/puppet/util/package/version/range/gt_eq.rb +14 -0
  199. data/lib/puppet/util/package/version/range/lt.rb +14 -0
  200. data/lib/puppet/util/package/version/range/lt_eq.rb +14 -0
  201. data/lib/puppet/util/package/version/range/min_max.rb +21 -0
  202. data/lib/puppet/util/package/version/range/simple.rb +11 -0
  203. data/lib/puppet/util/package/version/rpm.rb +73 -0
  204. data/lib/puppet/util/pidlock.rb +13 -7
  205. data/lib/puppet/util/platform.rb +5 -0
  206. data/lib/puppet/util/provider_features.rb +1 -1
  207. data/lib/puppet/util/reference.rb +1 -1
  208. data/lib/puppet/util/rpm_compare.rb +193 -0
  209. data/lib/puppet/util/windows.rb +1 -0
  210. data/lib/puppet/util/windows/adsi.rb +2 -2
  211. data/lib/puppet/util/windows/api_types.rb +60 -33
  212. data/lib/puppet/util/windows/eventlog.rb +1 -6
  213. data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
  214. data/lib/puppet/util/windows/principal.rb +8 -6
  215. data/lib/puppet/util/windows/process.rb +15 -14
  216. data/lib/puppet/util/windows/registry.rb +11 -11
  217. data/lib/puppet/util/windows/security.rb +5 -4
  218. data/lib/puppet/util/windows/service.rb +43 -26
  219. data/lib/puppet/util/windows/sid.rb +3 -3
  220. data/lib/puppet/util/windows/user.rb +242 -8
  221. data/lib/puppet/version.rb +1 -1
  222. data/locales/puppet.pot +641 -511
  223. data/man/man5/puppet.conf.5 +75 -10
  224. data/man/man8/puppet-agent.8 +7 -7
  225. data/man/man8/puppet-apply.8 +1 -1
  226. data/man/man8/puppet-catalog.8 +1 -1
  227. data/man/man8/puppet-config.8 +1 -1
  228. data/man/man8/puppet-describe.8 +1 -1
  229. data/man/man8/puppet-device.8 +2 -2
  230. data/man/man8/puppet-doc.8 +1 -1
  231. data/man/man8/puppet-epp.8 +1 -1
  232. data/man/man8/puppet-facts.8 +1 -1
  233. data/man/man8/puppet-filebucket.8 +17 -2
  234. data/man/man8/puppet-generate.8 +1 -1
  235. data/man/man8/puppet-help.8 +6 -3
  236. data/man/man8/puppet-key.8 +1 -1
  237. data/man/man8/puppet-lookup.8 +2 -2
  238. data/man/man8/puppet-man.8 +1 -1
  239. data/man/man8/puppet-module.8 +4 -1
  240. data/man/man8/puppet-node.8 +1 -1
  241. data/man/man8/puppet-parser.8 +1 -1
  242. data/man/man8/puppet-plugin.8 +1 -1
  243. data/man/man8/puppet-report.8 +1 -1
  244. data/man/man8/puppet-resource.8 +1 -1
  245. data/man/man8/puppet-script.8 +1 -1
  246. data/man/man8/puppet-ssl.8 +2 -2
  247. data/man/man8/puppet-status.8 +1 -1
  248. data/man/man8/puppet.8 +2 -2
  249. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  250. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  251. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +67 -0
  252. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -0
  253. data/spec/fixtures/ssl/unknown-ca-key.pem +67 -0
  254. data/spec/fixtures/ssl/unknown-ca.pem +59 -0
  255. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  256. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  257. data/spec/fixtures/unit/provider/package/dnfmodule/{dnf-module-list-installed.txt → dnf-module-list.txt} +8 -0
  258. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
  259. data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
  260. data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
  261. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
  262. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +1 -67
  263. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +1 -69
  264. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +1 -69
  265. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +1 -67
  266. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +1 -65
  267. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +1 -67
  268. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +1 -67
  269. data/spec/integration/application/agent_spec.rb +475 -0
  270. data/spec/integration/application/apply_spec.rb +279 -150
  271. data/spec/integration/application/config_spec.rb +74 -0
  272. data/spec/integration/application/doc_spec.rb +16 -6
  273. data/spec/integration/application/filebucket_spec.rb +239 -0
  274. data/spec/integration/application/help_spec.rb +42 -0
  275. data/spec/integration/application/lookup_spec.rb +13 -0
  276. data/spec/integration/application/module_spec.rb +68 -0
  277. data/spec/integration/application/plugin_spec.rb +123 -0
  278. data/spec/integration/data_binding_spec.rb +82 -0
  279. data/spec/integration/defaults_spec.rb +1 -2
  280. data/spec/integration/directory_environments_spec.rb +17 -17
  281. data/spec/integration/http/client_spec.rb +47 -37
  282. data/spec/integration/indirector/facts/facter_spec.rb +8 -6
  283. data/spec/integration/indirector/report/yaml.rb +83 -0
  284. data/spec/integration/network/http_pool_spec.rb +93 -20
  285. data/spec/integration/node/environment_spec.rb +15 -0
  286. data/spec/integration/parser/compiler_spec.rb +11 -0
  287. data/spec/integration/type/file_spec.rb +1 -1
  288. data/spec/integration/util/execution_spec.rb +22 -0
  289. data/spec/integration/util/windows/adsi_spec.rb +6 -1
  290. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
  291. data/spec/integration/util/windows/process_spec.rb +26 -32
  292. data/spec/integration/util/windows/registry_spec.rb +7 -7
  293. data/spec/integration/util/windows/user_spec.rb +47 -5
  294. data/spec/integration/util_spec.rb +7 -33
  295. data/spec/lib/puppet/test_ca.rb +2 -2
  296. data/spec/lib/puppet_spec/https.rb +16 -7
  297. data/spec/lib/puppet_spec/matchers.rb +0 -80
  298. data/spec/lib/puppet_spec/puppetserver.rb +127 -0
  299. data/spec/shared_contexts/https.rb +29 -0
  300. data/spec/unit/agent_spec.rb +80 -26
  301. data/spec/unit/application/agent_spec.rb +12 -9
  302. data/spec/unit/application/describe_spec.rb +88 -50
  303. data/spec/unit/application/device_spec.rb +2 -2
  304. data/spec/unit/application/face_base_spec.rb +6 -4
  305. data/spec/unit/application/facts_spec.rb +39 -10
  306. data/spec/unit/application/filebucket_spec.rb +22 -2
  307. data/spec/unit/application/man_spec.rb +52 -0
  308. data/spec/unit/application/resource_spec.rb +3 -1
  309. data/spec/unit/application/ssl_spec.rb +15 -2
  310. data/spec/unit/configurer/downloader_spec.rb +10 -0
  311. data/spec/unit/configurer/fact_handler_spec.rb +4 -4
  312. data/spec/unit/configurer/plugin_handler_spec.rb +36 -19
  313. data/spec/unit/configurer_spec.rb +64 -46
  314. data/spec/unit/confine_spec.rb +2 -1
  315. data/spec/unit/context/trusted_information_spec.rb +25 -2
  316. data/spec/unit/daemon_spec.rb +5 -64
  317. data/spec/unit/defaults_spec.rb +24 -1
  318. data/spec/unit/environments_spec.rb +8 -0
  319. data/spec/unit/face/config_spec.rb +3 -1
  320. data/spec/unit/face/module/search_spec.rb +17 -0
  321. data/spec/unit/face/plugin_spec.rb +12 -10
  322. data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
  323. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  324. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  325. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  326. data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
  327. data/spec/unit/file_system/uniquefile_spec.rb +29 -0
  328. data/spec/unit/file_system_spec.rb +10 -0
  329. data/spec/unit/functions/lookup_spec.rb +13 -0
  330. data/spec/unit/http/client_spec.rb +321 -36
  331. data/spec/unit/http/external_client_spec.rb +201 -0
  332. data/spec/unit/http/resolver_spec.rb +34 -3
  333. data/spec/unit/http/response_spec.rb +75 -0
  334. data/spec/unit/http/service/ca_spec.rb +53 -12
  335. data/spec/unit/http/service/compiler_spec.rb +332 -28
  336. data/spec/unit/http/service/file_server_spec.rb +100 -12
  337. data/spec/unit/http/service/report_spec.rb +19 -9
  338. data/spec/unit/http/service_spec.rb +94 -6
  339. data/spec/unit/http/session_spec.rb +159 -8
  340. data/spec/unit/indirector/catalog/compiler_spec.rb +1 -0
  341. data/spec/unit/indirector/catalog/rest_spec.rb +59 -2
  342. data/spec/unit/indirector/facts/rest_spec.rb +79 -24
  343. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +82 -2
  344. data/spec/unit/indirector/file_content/rest_spec.rb +53 -2
  345. data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
  346. data/spec/unit/indirector/file_metadata/rest_spec.rb +110 -2
  347. data/spec/unit/indirector/node/rest_spec.rb +57 -2
  348. data/spec/unit/indirector/report/rest_spec.rb +58 -51
  349. data/spec/unit/indirector/request_spec.rb +1 -1
  350. data/spec/unit/indirector/resource/ral_spec.rb +7 -8
  351. data/spec/unit/indirector/rest_spec.rb +13 -0
  352. data/spec/unit/indirector/status/rest_spec.rb +43 -2
  353. data/spec/unit/interface_spec.rb +3 -3
  354. data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
  355. data/spec/unit/network/format_support_spec.rb +3 -2
  356. data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
  357. data/spec/unit/network/http/connection_spec.rb +552 -190
  358. data/spec/unit/network/http/nocache_pool_spec.rb +22 -0
  359. data/spec/unit/network/http/pool_spec.rb +59 -13
  360. data/spec/unit/network/http_pool_spec.rb +63 -57
  361. data/spec/unit/network/http_spec.rb +1 -1
  362. data/spec/unit/node/environment_spec.rb +33 -0
  363. data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
  364. data/spec/unit/parser/environment_compiler_spec.rb +7 -0
  365. data/spec/unit/parser/scope_spec.rb +1 -1
  366. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
  367. data/spec/unit/pops/loaders/loaders_spec.rb +71 -1
  368. data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
  369. data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
  370. data/spec/unit/provider/group/groupadd_spec.rb +22 -8
  371. data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
  372. data/spec/unit/provider/package/aix_spec.rb +29 -0
  373. data/spec/unit/provider/package/apt_spec.rb +107 -0
  374. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  375. data/spec/unit/provider/package/dnfmodule_spec.rb +54 -15
  376. data/spec/unit/provider/package/gem_spec.rb +40 -0
  377. data/spec/unit/provider/package/pacman_spec.rb +6 -21
  378. data/spec/unit/provider/package/pip_spec.rb +68 -19
  379. data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
  380. data/spec/unit/provider/package/pkgng_spec.rb +38 -0
  381. data/spec/unit/provider/package/portage_spec.rb +5 -0
  382. data/spec/unit/provider/package/puppet_gem_spec.rb +12 -1
  383. data/spec/unit/provider/package/rpm_spec.rb +0 -212
  384. data/spec/unit/provider/package/yum_spec.rb +243 -1
  385. data/spec/unit/provider/package/zypper_spec.rb +98 -0
  386. data/spec/unit/provider/service/init_spec.rb +42 -0
  387. data/spec/unit/provider/service/openbsd_spec.rb +9 -0
  388. data/spec/unit/provider/service/openwrt_spec.rb +1 -0
  389. data/spec/unit/provider/service/redhat_spec.rb +9 -0
  390. data/spec/unit/provider/service/systemd_spec.rb +93 -18
  391. data/spec/unit/provider/service/windows_spec.rb +50 -14
  392. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  393. data/spec/unit/provider/user/useradd_spec.rb +30 -16
  394. data/spec/unit/provider/user/windows_adsi_spec.rb +85 -3
  395. data/spec/unit/puppet_pal_2pec.rb +11 -0
  396. data/spec/unit/puppet_pal_catalog_spec.rb +43 -0
  397. data/spec/unit/puppet_spec.rb +33 -0
  398. data/spec/unit/reports/http_spec.rb +70 -52
  399. data/spec/unit/reports/store_spec.rb +17 -13
  400. data/spec/unit/resource_spec.rb +3 -3
  401. data/spec/unit/settings/autosign_setting_spec.rb +1 -1
  402. data/spec/unit/settings/http_extra_headers_spec.rb +64 -0
  403. data/spec/unit/ssl/host_spec.rb +4 -2
  404. data/spec/unit/ssl/oids_spec.rb +1 -0
  405. data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
  406. data/spec/unit/ssl/state_machine_spec.rb +99 -13
  407. data/spec/unit/test/test_helper_spec.rb +17 -0
  408. data/spec/unit/transaction/persistence_spec.rb +15 -0
  409. data/spec/unit/transaction/report_spec.rb +5 -1
  410. data/spec/unit/transaction_spec.rb +0 -2
  411. data/spec/unit/type/file/ensure_spec.rb +1 -2
  412. data/spec/unit/type/file/source_spec.rb +89 -38
  413. data/spec/unit/type/file_spec.rb +122 -96
  414. data/spec/unit/type/service_spec.rb +218 -8
  415. data/spec/unit/type/user_spec.rb +32 -3
  416. data/spec/unit/type_spec.rb +50 -0
  417. data/spec/unit/util/at_fork_spec.rb +3 -2
  418. data/spec/unit/util/autoload_spec.rb +2 -1
  419. data/spec/unit/util/character_encoding_spec.rb +4 -4
  420. data/spec/unit/util/checksums_spec.rb +16 -0
  421. data/spec/unit/util/command_line_spec.rb +11 -6
  422. data/spec/unit/util/log/destinations_spec.rb +1 -29
  423. data/spec/unit/util/package/version/debian_spec.rb +83 -0
  424. data/spec/unit/util/package/version/pip_spec.rb +464 -0
  425. data/spec/unit/util/package/version/range_spec.rb +175 -0
  426. data/spec/unit/util/package/version/rpm_spec.rb +121 -0
  427. data/spec/unit/util/pidlock_spec.rb +102 -54
  428. data/spec/unit/util/rpm_compare_spec.rb +196 -0
  429. data/spec/unit/util/windows/adsi_spec.rb +4 -4
  430. data/spec/unit/util/windows/api_types_spec.rb +104 -40
  431. data/spec/unit/util/windows/service_spec.rb +4 -4
  432. data/spec/unit/util/windows/sid_spec.rb +2 -2
  433. data/spec/unit/util_spec.rb +3 -3
  434. data/spec/unit/x509/cert_provider_spec.rb +1 -1
  435. data/tasks/generate_cert_fixtures.rake +15 -1
  436. data/tasks/manpages.rake +5 -35
  437. metadata +84 -52
  438. data/COMMITTERS.md +0 -244
  439. data/spec/integration/faces/config_spec.rb +0 -91
  440. data/spec/integration/faces/documentation_spec.rb +0 -57
  441. data/spec/integration/faces/plugin_spec.rb +0 -61
  442. data/spec/integration/file_bucket/file_spec.rb +0 -50
  443. data/spec/integration/file_serving/content_spec.rb +0 -7
  444. data/spec/integration/file_serving/fileset_spec.rb +0 -12
  445. data/spec/integration/file_serving/metadata_spec.rb +0 -8
  446. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
  447. data/spec/integration/file_system/uniquefile_spec.rb +0 -26
  448. data/spec/integration/module_tool/forge_spec.rb +0 -64
  449. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  450. data/spec/integration/provider/service/init_spec.rb +0 -48
  451. data/spec/integration/provider/service/systemd_spec.rb +0 -25
  452. data/spec/integration/provider/service/windows_spec.rb +0 -50
  453. data/spec/integration/reference/providers_spec.rb +0 -21
  454. data/spec/integration/reports_spec.rb +0 -13
  455. data/spec/integration/ssl/certificate_request_spec.rb +0 -44
  456. data/spec/integration/ssl/host_spec.rb +0 -72
  457. data/spec/integration/ssl/key_spec.rb +0 -99
  458. data/spec/integration/test/test_helper_spec.rb +0 -31
  459. data/spec/shared_behaviours/file_serving_model.rb +0 -51
  460. data/spec/unit/face/man_spec.rb +0 -25
  461. data/spec/unit/man_spec.rb +0 -31
@@ -3,6 +3,7 @@
3
3
  # @api private
4
4
  class Puppet::Network::HTTP::NoCachePool < Puppet::Network::HTTP::BasePool
5
5
  def initialize(factory = Puppet::Network::HTTP::Factory.new)
6
+ Puppet.deprecation_warning(_('Puppet::Network::HTTP::NoCachePool is deprecated.'))
6
7
  @factory = factory
7
8
  end
8
9
 
@@ -9,11 +9,9 @@
9
9
  # @api private
10
10
  #
11
11
  class Puppet::Network::HTTP::Pool < Puppet::Network::HTTP::BasePool
12
- FIFTEEN_SECONDS = 15
12
+ attr_reader :factory, :keepalive_timeout
13
13
 
14
- attr_reader :factory
15
-
16
- def initialize(keepalive_timeout = FIFTEEN_SECONDS)
14
+ def initialize(keepalive_timeout)
17
15
  @pool = {}
18
16
  @factory = Puppet::Network::HTTP::Factory.new
19
17
  @keepalive_timeout = keepalive_timeout
@@ -75,9 +73,14 @@ class Puppet::Network::HTTP::Pool < Puppet::Network::HTTP::BasePool
75
73
  # @api private
76
74
  def borrow(site, verifier)
77
75
  @pool[site] = active_sessions(site)
78
- index = @pool[site].index { |session| verifier.reusable?(session.verifier) }
76
+ index = @pool[site].index do |session|
77
+ (verifier.nil? && session.verifier.nil?) ||
78
+ (!verifier.nil? && verifier.reusable?(session.verifier))
79
+ end
79
80
  session = index ? @pool[site].delete_at(index) : nil
80
81
  if session
82
+ @pool.delete(site) if @pool[site].empty?
83
+
81
84
  Puppet.debug("Using cached connection for #{site}")
82
85
  session.connection
83
86
  else
@@ -67,11 +67,11 @@ class Puppet::Network::HTTP::Route
67
67
  end
68
68
 
69
69
  def matches?(request)
70
- Puppet.debug("Evaluating match for #{self.inspect}")
70
+ Puppet.debug { "Evaluating match for #{self.inspect}" }
71
71
  if match(request.routing_path)
72
72
  return true
73
73
  else
74
- Puppet.debug("Did not match path (#{request.routing_path.inspect})")
74
+ Puppet.debug { "Did not match path (#{request.routing_path.inspect})" }
75
75
  end
76
76
  return false
77
77
  end
@@ -1,4 +1,5 @@
1
1
  require 'puppet/network/http/connection'
2
+ require 'puppet/network/http/connection_adapter'
2
3
  require 'puppet/util/platform'
3
4
 
4
5
  module Puppet::Network; end
@@ -12,7 +13,7 @@ module Puppet::Network; end
12
13
  #
13
14
  module Puppet::Network::HttpPool
14
15
 
15
- @http_client_class = Puppet::Network::HTTP::Connection
16
+ @http_client_class = Puppet::Network::HTTP::ConnectionAdapter
16
17
 
17
18
  def self.http_client_class
18
19
  @http_client_class
@@ -162,6 +162,10 @@ class Puppet::Node::Environment
162
162
  # @api private
163
163
  attr_accessor :loaders
164
164
 
165
+ # Lock for compilation that needs exclusive access to the environment
166
+ # @api private
167
+ attr_reader :lock
168
+
165
169
  # Checks to make sure that this environment did not have a manifest set in
166
170
  # its original environment.conf if Puppet is configured with
167
171
  # +disable_per_environment_manifest+ set true. If it did, the environment's
@@ -262,7 +266,7 @@ class Puppet::Node::Environment
262
266
  # @param name [String] The module name
263
267
  # @return [Puppet::Module, nil] The module if found, else nil
264
268
  def module(name)
265
- modules.find {|mod| mod.name == name}
269
+ modules_by_name[name]
266
270
  end
267
271
 
268
272
  # Locate a module instance by the full forge name (EG authorname/module)
@@ -293,7 +297,13 @@ class Puppet::Node::Environment
293
297
  def modules
294
298
  if @modules.nil?
295
299
  module_references = []
296
- seen_modules = {}
300
+ project = Puppet.lookup(:bolt_project) { nil }
301
+ seen_modules = if project && project.load_as_module?
302
+ module_references << project.to_h
303
+ { project.name => true }
304
+ else
305
+ {}
306
+ end
297
307
  modulepath.each do |path|
298
308
  Dir.entries(path).each do |name|
299
309
  next unless Puppet::Module.is_module_directory?(name, path)
@@ -317,6 +327,12 @@ class Puppet::Node::Environment
317
327
  @modules
318
328
  end
319
329
 
330
+ # @api private
331
+ def modules_by_name
332
+ @modules_by_name ||= Hash[modules.map { |mod| [mod.name, mod] }]
333
+ end
334
+ private :modules_by_name
335
+
320
336
  # Generate a warning if the given directory in a module path entry is named `lib`.
321
337
  #
322
338
  # @api private
@@ -325,9 +341,10 @@ class Puppet::Node::Environment
325
341
  # @param name [String] The directory name
326
342
  def warn_about_mistaken_path(path, name)
327
343
  if name == "lib"
328
- Puppet.debug("Warning: Found directory named 'lib' in module path ('#{path}/lib'); unless " +
329
- "you are expecting to load a module named 'lib', your module path may be set " +
330
- "incorrectly.")
344
+ Puppet.debug {
345
+ "Warning: Found directory named 'lib' in module path ('#{path}/lib'); unless you \
346
+ are expecting to load a module named 'lib', your module path may be set incorrectly."
347
+ }
331
348
  end
332
349
  end
333
350
 
@@ -97,6 +97,11 @@ module Pal
97
97
  internal_compiler.evaluate_additions
98
98
  end
99
99
 
100
+ # Attempts to evaluate AST for node defnintions https://puppet.com/docs/puppet/latest/lang_node_definitions.html
101
+ # if there are any.
102
+ def evaluate_ast_node
103
+ internal_compiler.evaluate_ast_node
104
+ end
100
105
  end
101
106
 
102
107
  end
@@ -49,6 +49,7 @@ module Pal
49
49
  # If given at the environment level, the facts given here are merged with higher priority.
50
50
  # @param variables [Hash] optional map of fully qualified variable name to value. If given at the environment level, the variables
51
51
  # given here are merged with higher priority.
52
+ # @param set_local_facts [Boolean] when true, the $facts, $server_facts, and $trusted variables are set for the scope.
52
53
  # @param block [Proc] the block performing operations on compiler
53
54
  # @return [Object] what the block returns
54
55
  # @yieldparam [Puppet::Pal::ScriptCompiler] compiler, a ScriptCompiler to perform operations on.
@@ -59,6 +60,7 @@ module Pal
59
60
  code_string: nil,
60
61
  facts: nil,
61
62
  variables: nil,
63
+ set_local_facts: true,
62
64
  &block
63
65
  )
64
66
  # TRANSLATORS: do not translate variable name strings in these assertions
@@ -91,7 +93,7 @@ module Pal
91
93
 
92
94
  # If manifest_file is nil, the #main method will use the env configured manifest
93
95
  # to do things in the block while a Script Compiler is in effect
94
- main(manifest_file, facts, variables, :script, &block)
96
+ main(manifest_file, facts, variables, :script, set_local_facts, &block)
95
97
  ensure
96
98
  Puppet[:tasks] = previous_tasks_value
97
99
  Puppet[:code] = previous_code_value
@@ -191,7 +193,7 @@ module Pal
191
193
 
192
194
  # If manifest_file is nil, the #main method will use the env configured manifest
193
195
  # to do things in the block while a Script Compiler is in effect
194
- main(manifest_file, facts, variables, :catalog, &block)
196
+ main(manifest_file, facts, variables, :catalog, false, &block)
195
197
  ensure
196
198
  # Clean up after ourselves
197
199
  Puppet[:tasks] = previous_tasks_value
@@ -379,7 +381,13 @@ module Pal
379
381
  # Picks up information from the puppet context and configures a script compiler which is given to
380
382
  # the provided block
381
383
  #
382
- def self.main(manifest, facts, variables, internal_compiler_class)
384
+ def self.main(
385
+ manifest,
386
+ facts,
387
+ variables,
388
+ internal_compiler_class,
389
+ set_local_facts
390
+ )
383
391
  # Configure the load path
384
392
  env = Puppet.lookup(:pal_env)
385
393
  env.each_plugin_directory do |dir|
@@ -422,45 +430,32 @@ module Pal
422
430
  # TRANSLATORS, the string "For puppet PAL" is not user facing
423
431
  Puppet.override({:current_environment => apply_environment}, "For puppet PAL") do
424
432
  begin
425
- # support the following features when evaluating puppet code
426
- # * $facts with facts from host running the script
427
- # * $settings with 'settings::*' namespace populated, and '$settings::all_local' hash
428
- # * $trusted as setup when using puppet apply
429
- # * an environment
430
- #
431
-
432
- # fixup trusted information
433
433
  node.sanitize()
434
-
435
434
  compiler = create_internal_compiler(internal_compiler_class, node)
436
- # compiler = Puppet::Parser::ScriptCompiler.new(node.environment, node.name)
437
- topscope = compiler.topscope
438
435
 
439
- # When scripting the trusted data are always local, but set them anyway
436
+ case internal_compiler_class
437
+ when :script
438
+ pal_compiler = ScriptCompiler.new(compiler)
439
+ overrides[:pal_script_compiler] = overrides[:pal_compiler] = pal_compiler
440
+ when :catalog
441
+ pal_compiler = CatalogCompiler.new(compiler)
442
+ overrides[:pal_catalog_compiler] = overrides[:pal_compiler] = pal_compiler
443
+ end
444
+
445
+ # When scripting the trusted data are always local; default is to set them anyway
440
446
  # When compiling for a catalog, the catalog compiler does this
441
- unless internal_compiler_class == :catalog
442
- topscope.set_trusted(node.trusted_data)
447
+ if set_local_facts
448
+ compiler.topscope.set_trusted(node.trusted_data)
443
449
 
444
450
  # Server facts are always about the local node's version etc.
445
- topscope.set_server_facts(node.server_facts)
451
+ compiler.topscope.set_server_facts(node.server_facts)
446
452
 
447
453
  # Set $facts for the node running the script
448
454
  facts_hash = node.facts.nil? ? {} : node.facts.values
449
- topscope.set_facts(facts_hash)
455
+ compiler.topscope.set_facts(facts_hash)
450
456
 
451
457
  # create the $settings:: variables
452
- topscope.merge_settings(node.environment.name, false)
453
- end
454
-
455
- add_variables(topscope, pal_variables)
456
-
457
- case internal_compiler_class
458
- when :script
459
- pal_compiler = ScriptCompiler.new(compiler)
460
- overrides[:pal_script_compiler] = overrides[:pal_compiler] = pal_compiler
461
- when :catalog
462
- pal_compiler = CatalogCompiler.new(compiler)
463
- overrides[:pal_catalog_compiler] = overrides[:pal_compiler] = pal_compiler
458
+ compiler.topscope.merge_settings(node.environment.name, false)
464
459
  end
465
460
 
466
461
  # Make compiler available to Puppet#lookup and injection in functions
@@ -468,6 +463,10 @@ module Pal
468
463
  # TRANSLATORS: Do not translate, symbolic name
469
464
  Puppet.override(overrides, "PAL::with_#{internal_compiler_class}_compiler") do
470
465
  compiler.compile do | compiler_yield |
466
+ # In case the varaibles passed to the compiler are PCore types defined in modules, they
467
+ # need to be deserialized and added from within the this scope, so that loaders are
468
+ # available during deserizlization.
469
+ add_variables(compiler.topscope, Puppet::Pops::Serialization::FromDataConverter.convert(pal_variables))
471
470
  # wrap the internal compiler to prevent it from leaking in the PAL API
472
471
  if block_given?
473
472
  yield(pal_compiler)
@@ -429,7 +429,7 @@ class Puppet::Parameter
429
429
  begin
430
430
  ret = unsafe_munge(value)
431
431
  rescue Puppet::Error => detail
432
- Puppet.debug "Reraising #{detail}"
432
+ Puppet.debug { "Reraising #{detail}" }
433
433
  raise
434
434
  rescue => detail
435
435
  raise Puppet::DevError, _("Munging failed for value %{value} in class %{class_name}: %{detail}") % { value: value.inspect, class_name: self.name, detail: detail }, detail.backtrace
@@ -17,17 +17,17 @@ class Puppet::Parser::AST::Leaf < Puppet::Parser::AST
17
17
  @value.to_s unless @value.nil?
18
18
  end
19
19
 
20
- def initialize(value: nil, **options)
20
+ def initialize(value: nil, file: nil, line: nil, pos: nil)
21
21
  @value = value
22
- super(**options)
22
+ super(file: file, line: line, pos: pos)
23
23
  end
24
24
  end
25
25
 
26
26
  # Host names, either fully qualified or just the short name, or even a regex
27
27
  #
28
28
  class Puppet::Parser::AST::HostName < Puppet::Parser::AST::Leaf
29
- def initialize(hash)
30
- super
29
+ def initialize(value: nil, file: nil, line: nil, pos: nil)
30
+ super(value: value, file: file, line: line, pos: pos)
31
31
 
32
32
  # Note that this is an AST::Regex, not a Regexp
33
33
  unless @value.is_a?(Regex)
@@ -51,7 +51,7 @@ end
51
51
 
52
52
  class Puppet::Parser::AST::Regex < Puppet::Parser::AST::Leaf
53
53
  def initialize(hash)
54
- super
54
+ super(**hash)
55
55
  # transform value from hash options unless it is already a regular expression
56
56
  @value = Regexp.new(@value) unless @value.is_a?(Regexp)
57
57
  end
@@ -57,10 +57,6 @@ class Puppet::Parser::AST::PopsBridge
57
57
  end
58
58
 
59
59
  class ExpressionSupportingReturn < Expression
60
- def initialize args
61
- super
62
- end
63
-
64
60
  def evaluate(scope)
65
61
  return catch(:return) do
66
62
  return catch(:next) do
@@ -348,6 +348,34 @@ class Puppet::Parser::Compiler
348
348
  end
349
349
  end
350
350
 
351
+
352
+ # If ast nodes are enabled, then see if we can find and evaluate one.
353
+ #
354
+ # @api private
355
+ def evaluate_ast_node
356
+ krt = environment.known_resource_types
357
+ return unless krt.nodes? #ast_nodes?
358
+
359
+ # Now see if we can find the node.
360
+ astnode = nil
361
+ @node.names.each do |name|
362
+ astnode = krt.node(name.to_s.downcase)
363
+ break if astnode
364
+ end
365
+
366
+ unless (astnode ||= krt.node("default"))
367
+ raise Puppet::ParseError, _("Could not find node statement with name 'default' or '%{names}'") % { names: node.names.join(", ") }
368
+ end
369
+
370
+ # Create a resource to model this node, and then add it to the list
371
+ # of resources.
372
+ resource = astnode.ensure_in_catalog(topscope)
373
+
374
+ resource.evaluate
375
+
376
+ @node_scope = topscope.class_scope(astnode)
377
+ end
378
+
351
379
  # Evaluates each specified class in turn. If there are any classes that
352
380
  # can't be found, an error is raised. This method really just creates resource objects
353
381
  # that point back to the classes, and then the resources are themselves
@@ -420,7 +448,7 @@ class Puppet::Parser::Compiler
420
448
  # using the top scope.
421
449
  def newscope(parent, options = {})
422
450
  parent ||= topscope
423
- scope = Puppet::Parser::Scope.new(self, options)
451
+ scope = Puppet::Parser::Scope.new(self, **options)
424
452
  scope.parent = parent
425
453
  scope
426
454
  end
@@ -486,31 +514,6 @@ class Puppet::Parser::Compiler
486
514
  krt.capability_mappings.clear # No longer needed
487
515
  end
488
516
 
489
- # If ast nodes are enabled, then see if we can find and evaluate one.
490
- def evaluate_ast_node
491
- krt = environment.known_resource_types
492
- return unless krt.nodes? #ast_nodes?
493
-
494
- # Now see if we can find the node.
495
- astnode = nil
496
- @node.names.each do |name|
497
- astnode = krt.node(name.to_s.downcase)
498
- break if astnode
499
- end
500
-
501
- unless (astnode ||= krt.node("default"))
502
- raise Puppet::ParseError, _("Could not find node statement with name 'default' or '%{names}'") % { names: node.names.join(", ") }
503
- end
504
-
505
- # Create a resource to model this node, and then add it to the list
506
- # of resources.
507
- resource = astnode.ensure_in_catalog(topscope)
508
-
509
- resource.evaluate
510
-
511
- @node_scope = topscope.class_scope(astnode)
512
- end
513
-
514
517
  # Evaluate our collections and return true if anything returned an object.
515
518
  # The 'true' is used to continue a loop, so it's important.
516
519
  def evaluate_collections
@@ -777,13 +780,7 @@ class Puppet::Parser::Compiler
777
780
  SETTINGS = 'settings'.freeze
778
781
 
779
782
  def create_settings_scope
780
- resource_types = environment.known_resource_types
781
- settings_type = resource_types.hostclass(SETTINGS)
782
- if settings_type.nil?
783
- settings_type = Puppet::Resource::Type.new(:hostclass, SETTINGS)
784
- resource_types.add(settings_type)
785
- end
786
-
783
+ settings_type = create_settings_type
787
784
  settings_resource = Puppet::Parser::Resource.new('class', SETTINGS, :scope => @topscope)
788
785
 
789
786
  @catalog.add_resource(settings_resource)
@@ -794,6 +791,19 @@ class Puppet::Parser::Compiler
794
791
  scope.merge_settings(environment.name)
795
792
  end
796
793
 
794
+ def create_settings_type
795
+ environment.lock.synchronize do
796
+ resource_types = environment.known_resource_types
797
+ settings_type = resource_types.hostclass(SETTINGS)
798
+ if settings_type.nil?
799
+ settings_type = Puppet::Resource::Type.new(:hostclass, SETTINGS)
800
+ resource_types.add(settings_type)
801
+ end
802
+
803
+ settings_type
804
+ end
805
+ end
806
+
797
807
  # Return an array of all of the unevaluated resources. These will be definitions,
798
808
  # which need to get evaluated into native resources.
799
809
  def unevaluated_resources
@@ -1,6 +1,8 @@
1
1
  class Puppet::Parser::Compiler
2
2
  # Validator that asserts that all capability resources that are referenced by 'consume' or 'require' has
3
3
  # been exported by some other resource in the environment
4
+ #
5
+ # @deprecated application orchestration will be removed in puppet 7
4
6
  class CatalogValidator::EnvironmentRelationshipValidator < CatalogValidator
5
7
 
6
8
  def validate
@@ -1,5 +1,7 @@
1
1
  class Puppet::Parser::Compiler
2
2
  # Validator that asserts that only application components can appear inside a site.
3
+ #
4
+ # @deprecated application orchestration will be removed in puppet 7
3
5
  class CatalogValidator::SiteValidator < CatalogValidator
4
6
  def self.validation_stage?(stage)
5
7
  PRE_FINISH.equal?(stage)
@@ -1,5 +1,6 @@
1
1
  require 'puppet/parser/compiler'
2
2
 
3
+ # @deprecated application orchestration will be removed in puppet 7
3
4
  class Puppet::Parser::EnvironmentCompiler < Puppet::Parser::Compiler
4
5
  def self.compile(env, code_id=nil)
5
6
  begin
@@ -16,7 +17,7 @@ class Puppet::Parser::EnvironmentCompiler < Puppet::Parser::Compiler
16
17
  end
17
18
 
18
19
  def initialize(node, options = {})
19
- super
20
+ super(node, **options)
20
21
  @overridden_functions = {}
21
22
  end
22
23
 
@@ -54,6 +55,8 @@ class Puppet::Parser::EnvironmentCompiler < Puppet::Parser::Compiler
54
55
  end
55
56
 
56
57
  def compile
58
+ Puppet.deprecation_warning("Application orchestration is deprecated. See https://puppet.com/docs/puppet/5.5/deprecated_language.html")
59
+
57
60
  add_function_overrides
58
61
  begin
59
62
  Puppet.override(@context_overrides, _("For compiling environment catalog %{env}") % { env: environment.name }) do