puppet 6.15.0-x86-mingw32 → 6.19.1-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 (418) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -7
  3. data/Gemfile +4 -2
  4. data/Gemfile.lock +29 -27
  5. data/README.md +3 -4
  6. data/Rakefile +4 -12
  7. data/lib/puppet.rb +32 -8
  8. data/lib/puppet/agent.rb +18 -4
  9. data/lib/puppet/agent/locker.rb +0 -7
  10. data/lib/puppet/application/agent.rb +23 -8
  11. data/lib/puppet/application/apply.rb +18 -20
  12. data/lib/puppet/application/device.rb +1 -1
  13. data/lib/puppet/application/doc.rb +1 -1
  14. data/lib/puppet/application/lookup.rb +16 -4
  15. data/lib/puppet/application/plugin.rb +1 -0
  16. data/lib/puppet/application/ssl.rb +1 -1
  17. data/lib/puppet/configurer.rb +61 -21
  18. data/lib/puppet/configurer/downloader.rb +31 -10
  19. data/lib/puppet/confine.rb +2 -2
  20. data/lib/puppet/confine/any.rb +1 -1
  21. data/lib/puppet/context/trusted_information.rb +14 -8
  22. data/lib/puppet/daemon.rb +13 -27
  23. data/lib/puppet/defaults.rb +119 -39
  24. data/lib/puppet/environments.rb +51 -10
  25. data/lib/puppet/face/catalog.rb +1 -1
  26. data/lib/puppet/face/config.rb +46 -16
  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/node.rb +3 -3
  31. data/lib/puppet/face/node/clean.rb +2 -2
  32. data/lib/puppet/face/plugin.rb +1 -1
  33. data/lib/puppet/face/status.rb +1 -1
  34. data/lib/puppet/feature/base.rb +1 -1
  35. data/lib/puppet/file_bucket/dipper.rb +1 -1
  36. data/lib/puppet/file_serving/http_metadata.rb +14 -2
  37. data/lib/puppet/file_serving/metadata.rb +4 -1
  38. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  39. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  40. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  41. data/lib/puppet/file_serving/terminus_selector.rb +7 -8
  42. data/lib/puppet/file_system/file_impl.rb +4 -4
  43. data/lib/puppet/file_system/uniquefile.rb +12 -16
  44. data/lib/puppet/forge.rb +1 -1
  45. data/lib/puppet/forge/cache.rb +1 -1
  46. data/lib/puppet/forge/repository.rb +4 -7
  47. data/lib/puppet/functions/filter.rb +1 -0
  48. data/lib/puppet/functions/lstrip.rb +4 -4
  49. data/lib/puppet/functions/new.rb +8 -3
  50. data/lib/puppet/functions/reverse_each.rb +1 -1
  51. data/lib/puppet/functions/rstrip.rb +4 -4
  52. data/lib/puppet/functions/step.rb +1 -1
  53. data/lib/puppet/functions/strip.rb +4 -4
  54. data/lib/puppet/gettext/config.rb +5 -5
  55. data/lib/puppet/gettext/module_translations.rb +4 -4
  56. data/lib/puppet/http.rb +1 -0
  57. data/lib/puppet/http/client.rb +28 -12
  58. data/lib/puppet/http/external_client.rb +0 -6
  59. data/lib/puppet/http/redirector.rb +9 -7
  60. data/lib/puppet/http/resolver.rb +5 -8
  61. data/lib/puppet/http/resolver/server_list.rb +18 -36
  62. data/lib/puppet/http/resolver/settings.rb +4 -4
  63. data/lib/puppet/http/resolver/srv.rb +5 -5
  64. data/lib/puppet/http/response.rb +19 -0
  65. data/lib/puppet/http/service.rb +3 -1
  66. data/lib/puppet/http/service/compiler.rb +1 -1
  67. data/lib/puppet/http/service/file_server.rb +1 -1
  68. data/lib/puppet/http/service/puppetserver.rb +39 -0
  69. data/lib/puppet/http/session.rb +5 -4
  70. data/lib/puppet/indirector.rb +1 -1
  71. data/lib/puppet/indirector/catalog/compiler.rb +1 -1
  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/yaml.rb +1 -1
  75. data/lib/puppet/indirector/file_content/http.rb +5 -0
  76. data/lib/puppet/indirector/file_content/rest.rb +1 -1
  77. data/lib/puppet/indirector/file_metadata/http.rb +28 -8
  78. data/lib/puppet/indirector/file_metadata/rest.rb +2 -2
  79. data/lib/puppet/indirector/hiera.rb +4 -0
  80. data/lib/puppet/indirector/indirection.rb +1 -1
  81. data/lib/puppet/indirector/json.rb +1 -1
  82. data/lib/puppet/indirector/msgpack.rb +1 -1
  83. data/lib/puppet/indirector/report/processor.rb +2 -2
  84. data/lib/puppet/indirector/request.rb +5 -5
  85. data/lib/puppet/indirector/rest.rb +7 -1
  86. data/lib/puppet/indirector/yaml.rb +1 -1
  87. data/lib/puppet/module.rb +1 -2
  88. data/lib/puppet/network/format_support.rb +2 -2
  89. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  90. data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
  91. data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
  92. data/lib/puppet/network/http/compression.rb +7 -0
  93. data/lib/puppet/network/http/connection.rb +2 -0
  94. data/lib/puppet/network/http/connection_adapter.rb +184 -0
  95. data/lib/puppet/network/http/nocache_pool.rb +1 -0
  96. data/lib/puppet/network/http/route.rb +2 -2
  97. data/lib/puppet/network/http_pool.rb +2 -2
  98. data/lib/puppet/node/environment.rb +12 -5
  99. data/lib/puppet/node/facts.rb +17 -0
  100. data/lib/puppet/pal/catalog_compiler.rb +5 -0
  101. data/lib/puppet/pal/pal_impl.rb +31 -4
  102. data/lib/puppet/parameter.rb +1 -1
  103. data/lib/puppet/parser/ast/leaf.rb +5 -5
  104. data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
  105. data/lib/puppet/parser/compiler.rb +29 -26
  106. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
  107. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
  108. data/lib/puppet/parser/environment_compiler.rb +4 -1
  109. data/lib/puppet/parser/functions.rb +21 -17
  110. data/lib/puppet/parser/functions/create_resources.rb +11 -7
  111. data/lib/puppet/parser/functions/filter.rb +1 -0
  112. data/lib/puppet/parser/resource.rb +3 -2
  113. data/lib/puppet/parser/resource/param.rb +6 -0
  114. data/lib/puppet/parser/type_loader.rb +2 -2
  115. data/lib/puppet/pops/adaptable.rb +7 -13
  116. data/lib/puppet/pops/adapters.rb +8 -4
  117. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
  118. data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
  119. data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
  120. data/lib/puppet/pops/issues.rb +5 -0
  121. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
  122. data/lib/puppet/pops/loaders.rb +18 -11
  123. data/lib/puppet/pops/lookup/context.rb +1 -1
  124. data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
  125. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
  126. data/lib/puppet/pops/types/iterable.rb +34 -8
  127. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  128. data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
  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/package/aix.rb +17 -2
  133. data/lib/puppet/provider/package/apt.rb +38 -1
  134. data/lib/puppet/provider/package/aptitude.rb +1 -1
  135. data/lib/puppet/provider/package/dnfmodule.rb +24 -4
  136. data/lib/puppet/provider/package/dpkg.rb +1 -1
  137. data/lib/puppet/provider/package/gem.rb +4 -2
  138. data/lib/puppet/provider/package/pip.rb +60 -37
  139. data/lib/puppet/provider/package/pip2.rb +17 -0
  140. data/lib/puppet/provider/package/portage.rb +2 -2
  141. data/lib/puppet/provider/package/puppet_gem.rb +5 -0
  142. data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
  143. data/lib/puppet/provider/package/yum.rb +9 -1
  144. data/lib/puppet/provider/package/zypper.rb +62 -1
  145. data/lib/puppet/provider/service/systemd.rb +21 -4
  146. data/lib/puppet/provider/service/windows.rb +23 -7
  147. data/lib/puppet/provider/user/aix.rb +1 -1
  148. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  149. data/lib/puppet/provider/user/useradd.rb +16 -5
  150. data/lib/puppet/provider/user/windows_adsi.rb +18 -1
  151. data/lib/puppet/reports/http.rb +7 -3
  152. data/lib/puppet/resource.rb +2 -1
  153. data/lib/puppet/resource/type.rb +10 -1
  154. data/lib/puppet/rest/route.rb +2 -2
  155. data/lib/puppet/runtime.rb +25 -2
  156. data/lib/puppet/settings.rb +43 -6
  157. data/lib/puppet/ssl/ssl_context.rb +2 -2
  158. data/lib/puppet/ssl/ssl_provider.rb +20 -1
  159. data/lib/puppet/ssl/state_machine.rb +33 -8
  160. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  161. data/lib/puppet/ssl/verifier_adapter.rb +9 -1
  162. data/lib/puppet/test/test_helper.rb +19 -14
  163. data/lib/puppet/transaction.rb +2 -2
  164. data/lib/puppet/transaction/persistence.rb +1 -1
  165. data/lib/puppet/transaction/report.rb +12 -8
  166. data/lib/puppet/trusted_external.rb +29 -1
  167. data/lib/puppet/type.rb +15 -7
  168. data/lib/puppet/type/file.rb +40 -15
  169. data/lib/puppet/type/file/checksum.rb +4 -4
  170. data/lib/puppet/type/file/source.rb +33 -13
  171. data/lib/puppet/type/filebucket.rb +1 -1
  172. data/lib/puppet/type/notify.rb +2 -2
  173. data/lib/puppet/type/package.rb +16 -1
  174. data/lib/puppet/type/service.rb +59 -8
  175. data/lib/puppet/type/user.rb +19 -10
  176. data/lib/puppet/util.rb +41 -3
  177. data/lib/puppet/util/autoload.rb +10 -25
  178. data/lib/puppet/util/character_encoding.rb +9 -5
  179. data/lib/puppet/util/checksums.rb +19 -4
  180. data/lib/puppet/util/connection.rb +8 -8
  181. data/lib/puppet/util/execution.rb +2 -2
  182. data/lib/puppet/util/fileparsing.rb +2 -2
  183. data/lib/puppet/util/log/destinations.rb +1 -10
  184. data/lib/puppet/util/package/version/range.rb +4 -1
  185. data/lib/puppet/util/package/version/range/eq.rb +14 -0
  186. data/lib/puppet/util/provider_features.rb +1 -1
  187. data/lib/puppet/util/reference.rb +1 -1
  188. data/lib/puppet/util/run_mode.rb +5 -1
  189. data/lib/puppet/util/windows.rb +1 -0
  190. data/lib/puppet/util/windows/api_types.rb +60 -33
  191. data/lib/puppet/util/windows/eventlog.rb +1 -6
  192. data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
  193. data/lib/puppet/util/windows/principal.rb +8 -6
  194. data/lib/puppet/util/windows/registry.rb +11 -11
  195. data/lib/puppet/util/windows/security.rb +4 -4
  196. data/lib/puppet/util/windows/service.rb +43 -26
  197. data/lib/puppet/util/windows/user.rb +242 -8
  198. data/lib/puppet/version.rb +1 -1
  199. data/locales/puppet.pot +541 -427
  200. data/man/man5/puppet.conf.5 +84 -19
  201. data/man/man8/puppet-agent.8 +7 -4
  202. data/man/man8/puppet-apply.8 +1 -1
  203. data/man/man8/puppet-catalog.8 +1 -1
  204. data/man/man8/puppet-config.8 +6 -6
  205. data/man/man8/puppet-describe.8 +1 -1
  206. data/man/man8/puppet-device.8 +1 -1
  207. data/man/man8/puppet-doc.8 +1 -1
  208. data/man/man8/puppet-epp.8 +1 -1
  209. data/man/man8/puppet-facts.8 +1 -1
  210. data/man/man8/puppet-filebucket.8 +1 -1
  211. data/man/man8/puppet-generate.8 +1 -1
  212. data/man/man8/puppet-help.8 +6 -3
  213. data/man/man8/puppet-key.8 +1 -1
  214. data/man/man8/puppet-lookup.8 +2 -2
  215. data/man/man8/puppet-man.8 +1 -1
  216. data/man/man8/puppet-module.8 +4 -1
  217. data/man/man8/puppet-node.8 +4 -4
  218. data/man/man8/puppet-parser.8 +1 -1
  219. data/man/man8/puppet-plugin.8 +1 -1
  220. data/man/man8/puppet-report.8 +1 -1
  221. data/man/man8/puppet-resource.8 +1 -1
  222. data/man/man8/puppet-script.8 +1 -1
  223. data/man/man8/puppet-ssl.8 +1 -1
  224. data/man/man8/puppet-status.8 +2 -2
  225. data/man/man8/puppet.8 +2 -2
  226. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  227. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  228. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  229. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  230. data/spec/fixtures/unit/provider/package/dnfmodule/{dnf-module-list-enabled.txt → dnf-module-list.txt} +6 -0
  231. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
  232. data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
  233. data/spec/integration/application/agent_spec.rb +202 -52
  234. data/spec/integration/application/apply_spec.rb +149 -149
  235. data/spec/integration/application/config_spec.rb +74 -0
  236. data/spec/integration/application/doc_spec.rb +16 -6
  237. data/spec/integration/application/filebucket_spec.rb +70 -21
  238. data/spec/integration/application/help_spec.rb +42 -0
  239. data/spec/integration/application/lookup_spec.rb +13 -0
  240. data/spec/integration/application/module_spec.rb +68 -0
  241. data/spec/integration/application/plugin_spec.rb +75 -2
  242. data/spec/integration/configurer_spec.rb +14 -0
  243. data/spec/integration/data_binding_spec.rb +82 -0
  244. data/spec/integration/defaults_spec.rb +27 -3
  245. data/spec/integration/directory_environments_spec.rb +17 -17
  246. data/spec/integration/http/client_spec.rb +6 -1
  247. data/spec/integration/indirector/facts/facter_spec.rb +8 -6
  248. data/spec/integration/network/http_pool_spec.rb +73 -0
  249. data/spec/integration/node/environment_spec.rb +1 -1
  250. data/spec/integration/parser/compiler_spec.rb +11 -0
  251. data/spec/integration/type/file_spec.rb +1 -1
  252. data/spec/integration/util/execution_spec.rb +22 -0
  253. data/spec/integration/util/windows/adsi_spec.rb +7 -2
  254. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
  255. data/spec/integration/util/windows/process_spec.rb +26 -32
  256. data/spec/integration/util/windows/registry_spec.rb +7 -7
  257. data/spec/integration/util/windows/user_spec.rb +47 -5
  258. data/spec/integration/util_spec.rb +7 -33
  259. data/spec/lib/puppet_spec/https.rb +6 -0
  260. data/spec/lib/puppet_spec/matchers.rb +0 -80
  261. data/spec/lib/puppet_spec/puppetserver.rb +8 -0
  262. data/spec/shared_contexts/types_setup.rb +2 -0
  263. data/spec/unit/agent_spec.rb +47 -1
  264. data/spec/unit/application/agent_spec.rb +7 -8
  265. data/spec/unit/application/doc_spec.rb +2 -2
  266. data/spec/unit/application/face_base_spec.rb +6 -4
  267. data/spec/unit/application/facts_spec.rb +41 -10
  268. data/spec/unit/application/man_spec.rb +52 -0
  269. data/spec/unit/application/resource_spec.rb +3 -1
  270. data/spec/unit/application/ssl_spec.rb +15 -2
  271. data/spec/unit/application_spec.rb +9 -4
  272. data/spec/unit/configurer/downloader_spec.rb +10 -0
  273. data/spec/unit/configurer/fact_handler_spec.rb +4 -4
  274. data/spec/unit/configurer_spec.rb +86 -37
  275. data/spec/unit/confine_spec.rb +2 -1
  276. data/spec/unit/context/trusted_information_spec.rb +25 -2
  277. data/spec/unit/daemon_spec.rb +5 -64
  278. data/spec/unit/environments_spec.rb +99 -32
  279. data/spec/unit/face/config_spec.rb +59 -1
  280. data/spec/unit/face/module/search_spec.rb +17 -0
  281. data/spec/unit/face/node_spec.rb +2 -2
  282. data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
  283. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  284. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  285. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  286. data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
  287. data/spec/unit/file_system/uniquefile_spec.rb +29 -0
  288. data/spec/unit/file_system_spec.rb +1 -2
  289. data/spec/unit/http/client_spec.rb +74 -19
  290. data/spec/unit/http/external_client_spec.rb +9 -9
  291. data/spec/unit/http/resolver_spec.rb +24 -5
  292. data/spec/unit/http/response_spec.rb +6 -0
  293. data/spec/unit/http/service/ca_spec.rb +2 -3
  294. data/spec/unit/http/service/compiler_spec.rb +2 -3
  295. data/spec/unit/http/service/file_server_spec.rb +2 -3
  296. data/spec/unit/http/service/puppetserver_spec.rb +82 -0
  297. data/spec/unit/http/service/report_spec.rb +2 -3
  298. data/spec/unit/http/service_spec.rb +0 -1
  299. data/spec/unit/http/session_spec.rb +8 -21
  300. data/spec/unit/indirector/catalog/compiler_spec.rb +1 -0
  301. data/spec/unit/indirector/catalog/json_spec.rb +1 -1
  302. data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
  303. data/spec/unit/indirector/facts/rest_spec.rb +1 -1
  304. data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
  305. data/spec/unit/indirector/file_metadata/rest_spec.rb +15 -14
  306. data/spec/unit/indirector/json_spec.rb +8 -8
  307. data/spec/unit/indirector/msgpack_spec.rb +8 -8
  308. data/spec/unit/indirector/node/rest_spec.rb +1 -1
  309. data/spec/unit/indirector/request_spec.rb +5 -5
  310. data/spec/unit/indirector/rest_spec.rb +14 -1
  311. data/spec/unit/indirector/status/rest_spec.rb +1 -1
  312. data/spec/unit/indirector/yaml_spec.rb +7 -7
  313. data/spec/unit/interface_spec.rb +3 -3
  314. data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
  315. data/spec/unit/network/format_support_spec.rb +3 -2
  316. data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
  317. data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
  318. data/spec/unit/network/http/connection_spec.rb +552 -190
  319. data/spec/unit/network/http/nocache_pool_spec.rb +22 -0
  320. data/spec/unit/network/http_pool_spec.rb +63 -57
  321. data/spec/unit/network/http_spec.rb +1 -1
  322. data/spec/unit/node/environment_spec.rb +18 -1
  323. data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
  324. data/spec/unit/parser/environment_compiler_spec.rb +7 -0
  325. data/spec/unit/parser/scope_spec.rb +1 -1
  326. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
  327. data/spec/unit/pops/loaders/loaders_spec.rb +71 -1
  328. data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
  329. data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
  330. data/spec/unit/provider/exec_spec.rb +4 -3
  331. data/spec/unit/provider/package/aix_spec.rb +29 -0
  332. data/spec/unit/provider/package/apt_spec.rb +77 -0
  333. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  334. data/spec/unit/provider/package/dnfmodule_spec.rb +25 -5
  335. data/spec/unit/provider/package/dpkg_spec.rb +22 -7
  336. data/spec/unit/provider/package/openbsd_spec.rb +2 -0
  337. data/spec/unit/provider/package/pip2_spec.rb +36 -0
  338. data/spec/unit/provider/package/pip_spec.rb +42 -16
  339. data/spec/unit/provider/package/portage_spec.rb +5 -0
  340. data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
  341. data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
  342. data/spec/unit/provider/package/yum_spec.rb +47 -8
  343. data/spec/unit/provider/package/zypper_spec.rb +98 -0
  344. data/spec/unit/provider/service/base_spec.rb +2 -4
  345. data/spec/unit/provider/service/bsd_spec.rb +5 -1
  346. data/spec/unit/provider/service/daemontools_spec.rb +1 -1
  347. data/spec/unit/provider/service/debian_spec.rb +3 -5
  348. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  349. data/spec/unit/provider/service/gentoo_spec.rb +4 -5
  350. data/spec/unit/provider/service/init_spec.rb +46 -5
  351. data/spec/unit/provider/service/launchd_spec.rb +5 -6
  352. data/spec/unit/provider/service/openbsd_spec.rb +9 -0
  353. data/spec/unit/provider/service/openrc_spec.rb +4 -5
  354. data/spec/unit/provider/service/openwrt_spec.rb +2 -1
  355. data/spec/unit/provider/service/redhat_spec.rb +10 -1
  356. data/spec/unit/provider/service/runit_spec.rb +2 -1
  357. data/spec/unit/provider/service/smf_spec.rb +1 -1
  358. data/spec/unit/provider/service/src_spec.rb +3 -5
  359. data/spec/unit/provider/service/systemd_spec.rb +87 -19
  360. data/spec/unit/provider/service/upstart_spec.rb +4 -5
  361. data/spec/unit/provider/service/windows_spec.rb +50 -14
  362. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  363. data/spec/unit/provider/user/useradd_spec.rb +30 -16
  364. data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
  365. data/spec/unit/puppet_pal_2pec.rb +40 -0
  366. data/spec/unit/puppet_pal_catalog_spec.rb +43 -0
  367. data/spec/unit/puppet_spec.rb +33 -0
  368. data/spec/unit/reports/http_spec.rb +1 -1
  369. data/spec/unit/reports/store_spec.rb +17 -13
  370. data/spec/unit/resource_spec.rb +3 -3
  371. data/spec/unit/rest/route_spec.rb +4 -4
  372. data/spec/unit/settings_spec.rb +182 -22
  373. data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
  374. data/spec/unit/ssl/state_machine_spec.rb +52 -8
  375. data/spec/unit/test/test_helper_spec.rb +17 -0
  376. data/spec/unit/transaction/persistence_spec.rb +15 -0
  377. data/spec/unit/transaction/report_spec.rb +3 -1
  378. data/spec/unit/type/file/source_spec.rb +4 -4
  379. data/spec/unit/type/file_spec.rb +122 -96
  380. data/spec/unit/type/filebucket_spec.rb +1 -1
  381. data/spec/unit/type/service_spec.rb +218 -8
  382. data/spec/unit/type/user_spec.rb +32 -3
  383. data/spec/unit/type_spec.rb +50 -0
  384. data/spec/unit/util/autoload_spec.rb +2 -1
  385. data/spec/unit/util/character_encoding_spec.rb +4 -4
  386. data/spec/unit/util/checksums_spec.rb +16 -0
  387. data/spec/unit/util/command_line_spec.rb +11 -6
  388. data/spec/unit/util/log/destinations_spec.rb +1 -29
  389. data/spec/unit/util/package/version/range_spec.rb +22 -1
  390. data/spec/unit/util/run_mode_spec.rb +6 -6
  391. data/spec/unit/util/windows/api_types_spec.rb +104 -40
  392. data/spec/unit/util/windows/service_spec.rb +4 -4
  393. data/spec/unit/util_spec.rb +3 -3
  394. data/spec/unit/x509/cert_provider_spec.rb +1 -1
  395. data/tasks/manpages.rake +5 -35
  396. metadata +43 -49
  397. data/spec/integration/faces/config_spec.rb +0 -91
  398. data/spec/integration/faces/documentation_spec.rb +0 -57
  399. data/spec/integration/file_bucket/file_spec.rb +0 -50
  400. data/spec/integration/file_serving/content_spec.rb +0 -7
  401. data/spec/integration/file_serving/fileset_spec.rb +0 -12
  402. data/spec/integration/file_serving/metadata_spec.rb +0 -8
  403. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
  404. data/spec/integration/file_system/uniquefile_spec.rb +0 -26
  405. data/spec/integration/module_tool/forge_spec.rb +0 -51
  406. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  407. data/spec/integration/provider/service/init_spec.rb +0 -48
  408. data/spec/integration/provider/service/systemd_spec.rb +0 -25
  409. data/spec/integration/provider/service/windows_spec.rb +0 -50
  410. data/spec/integration/reference/providers_spec.rb +0 -21
  411. data/spec/integration/reports_spec.rb +0 -13
  412. data/spec/integration/ssl/certificate_request_spec.rb +0 -44
  413. data/spec/integration/ssl/host_spec.rb +0 -72
  414. data/spec/integration/ssl/key_spec.rb +0 -99
  415. data/spec/integration/test/test_helper_spec.rb +0 -31
  416. data/spec/shared_behaviours/file_serving_model.rb +0 -51
  417. data/spec/unit/face/man_spec.rb +0 -25
  418. data/spec/unit/man_spec.rb +0 -31
@@ -218,7 +218,7 @@ class Puppet::Network::HTTP::API::IndirectedRoutes
218
218
  return formatter if formatter
219
219
 
220
220
  raise Puppet::Network::HTTP::Error::HTTPNotAcceptableError.new(
221
- _("No supported formats are acceptable (Accept: %{accepted_formats})") % { accepted_formats: formats },
221
+ _("No supported formats are acceptable (Accept: %{accepted_formats})") % { accepted_formats: formats.map(&:mime).join(', ') },
222
222
  Puppet::Network::HTTP::Issues::UNSUPPORTED_FORMAT)
223
223
  end
224
224
 
@@ -1,8 +1,11 @@
1
1
  require 'puppet/util/json'
2
2
  require 'puppet/parser/environment_compiler'
3
3
 
4
+ # @deprecated application orchestration will be removed in puppet 7
4
5
  class Puppet::Network::HTTP::API::Master::V3::Environment
5
6
  def call(request, response)
7
+ Puppet.deprecation_warning("Application orchestration is deprecated. See https://puppet.com/docs/puppet/5.5/deprecated_language.html")
8
+
6
9
  env_name = request.routing_path.split('/').last
7
10
  env = Puppet.lookup(:environments).get(env_name)
8
11
  code_id = request.params[:code_id]
@@ -31,5 +31,4 @@ class Puppet::Network::HTTP::API::Master::V3::Environments
31
31
  ttl
32
32
  end
33
33
  end
34
-
35
34
  end
@@ -20,9 +20,11 @@ module Puppet::Network::HTTP::Compression
20
20
  def uncompress_body(response)
21
21
  case response['content-encoding']
22
22
  when 'gzip'
23
+ Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::Active#uncompress_body is deprecated.'))
23
24
  # ZLib::GzipReader has an associated encoding, by default Encoding.default_external
24
25
  return Zlib::GzipReader.new(StringIO.new(response.body), :encoding => Encoding::BINARY).read
25
26
  when 'deflate'
27
+ Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::Active#uncompress_body is deprecated.'))
26
28
  return Zlib::Inflate.new.inflate(response.body)
27
29
  when nil, 'identity'
28
30
  return response.body
@@ -32,6 +34,7 @@ module Puppet::Network::HTTP::Compression
32
34
  end
33
35
 
34
36
  def uncompress(response)
37
+ Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::Active#uncompress is deprecated.'))
35
38
  raise Net::HTTPError.new("No block passed", response) unless block_given?
36
39
 
37
40
  case response['content-encoding']
@@ -71,6 +74,7 @@ module Puppet::Network::HTTP::Compression
71
74
  end
72
75
 
73
76
  def uncompress(chunk)
77
+ Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::ZlibAdapter#uncompress is deprecated.'))
74
78
  out = @uncompressor.inflate(chunk)
75
79
  @first = false
76
80
  return out
@@ -97,6 +101,7 @@ module Puppet::Network::HTTP::Compression
97
101
 
98
102
  module None
99
103
  def uncompress_body(response)
104
+ Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::None#uncompress_body is deprecated.'))
100
105
  response.body
101
106
  end
102
107
 
@@ -105,12 +110,14 @@ module Puppet::Network::HTTP::Compression
105
110
  end
106
111
 
107
112
  def uncompress(response)
113
+ Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::None#uncompress is deprecated.'))
108
114
  yield IdentityAdapter.new
109
115
  end
110
116
  end
111
117
 
112
118
  class IdentityAdapter
113
119
  def uncompress(chunk)
120
+ Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::IdentityAdapter#uncompress is deprecated.'))
114
121
  chunk
115
122
  end
116
123
 
@@ -343,6 +343,8 @@ module Puppet::Network::HTTP
343
343
  end
344
344
 
345
345
  def with_connection(site, &block)
346
+ Puppet.deprecation_warning(_('Puppet::Network::HTTP::Connection is deprecated. Please use Puppet::Network::HTTP::ConnectionAdapter instead.'))
347
+
346
348
  response = nil
347
349
  @pool.with_connection(site, @verifier) do |conn|
348
350
  response = yield conn
@@ -0,0 +1,184 @@
1
+ class Puppet::Network::HTTP::ConnectionAdapter < Puppet::Network::HTTP::Connection
2
+ def initialize(host, port, options = {})
3
+ super(host, port, options)
4
+
5
+ @client = Puppet.runtime[:http]
6
+ end
7
+
8
+ def get(path, headers = {}, options = {})
9
+ headers ||= {}
10
+ options[:ssl_context] ||= resolve_ssl_context
11
+ options[:redirect_limit] ||= @redirect_limit
12
+
13
+ with_error_handling do
14
+ resp = @client.get(to_url(path), headers: headers, options: options)
15
+ resp.nethttp
16
+ end
17
+ end
18
+
19
+ def post(path, data, headers = nil, options = {})
20
+ headers ||= {}
21
+ headers['Content-Type'] ||= "application/x-www-form-urlencoded"
22
+ data ||= ''
23
+ options[:ssl_context] ||= resolve_ssl_context
24
+ options[:redirect_limit] ||= @redirect_limit
25
+
26
+ with_error_handling do
27
+ resp = @client.post(to_url(path), data, headers: headers, options: options)
28
+ resp.nethttp
29
+ end
30
+ end
31
+
32
+ def head(path, headers = {}, options = {})
33
+ headers ||= {}
34
+ options[:ssl_context] ||= resolve_ssl_context
35
+ options[:redirect_limit] ||= @redirect_limit
36
+
37
+ with_error_handling do
38
+ resp = @client.head(to_url(path), headers: headers, options: options)
39
+ resp.nethttp
40
+ end
41
+ end
42
+
43
+ def delete(path, headers = {'Depth' => 'Infinity'}, options = {})
44
+ headers ||= {}
45
+ options[:ssl_context] ||= resolve_ssl_context
46
+ options[:redirect_limit] ||= @redirect_limit
47
+
48
+ with_error_handling do
49
+ resp = @client.delete(to_url(path), headers: headers, options: options)
50
+ resp.nethttp
51
+ end
52
+ end
53
+
54
+ def put(path, data, headers = nil, options = {})
55
+ headers ||= {}
56
+ headers['Content-Type'] ||= "application/x-www-form-urlencoded"
57
+ data ||= ''
58
+ options[:ssl_context] ||= resolve_ssl_context
59
+ options[:redirect_limit] ||= @redirect_limit
60
+
61
+ with_error_handling do
62
+ resp = @client.put(to_url(path), data, headers: headers, options: options)
63
+ resp.nethttp
64
+ end
65
+ end
66
+
67
+ def request_get(*args, &block)
68
+ path, headers = *args
69
+ headers ||= {}
70
+ options = {
71
+ ssl_context: resolve_ssl_context,
72
+ redirect_limit: @redirect_limit
73
+ }
74
+
75
+ resp = @client.get(to_url(path), headers: headers, options: options) do |response|
76
+ yield response.nethttp if block_given?
77
+ end
78
+ resp.nethttp
79
+ end
80
+
81
+ def request_head(*args, &block)
82
+ path, headers = *args
83
+ headers ||= {}
84
+ options = {
85
+ ssl_context: resolve_ssl_context,
86
+ redirect_limit: @redirect_limit
87
+ }
88
+
89
+ response = @client.head(to_url(path), headers: headers, options: options)
90
+ yield response.nethttp if block_given?
91
+ response.nethttp
92
+ end
93
+
94
+ def request_post(*args, &block)
95
+ path, data, headers = *args
96
+ headers ||= {}
97
+ headers['Content-Type'] ||= "application/x-www-form-urlencoded"
98
+ options = {
99
+ ssl_context: resolve_ssl_context,
100
+ redirect_limit: @redirect_limit
101
+ }
102
+
103
+ resp = @client.post(to_url(path), data, headers: headers, options: options) do |response|
104
+ yield response.nethttp if block_given?
105
+ end
106
+ resp.nethttp
107
+ end
108
+
109
+ private
110
+
111
+ # The old Connection class ignores the ssl_context on the Puppet stack,
112
+ # and always loads certs/keys based on what is currently in the filesystem.
113
+ # If the files are missing, it would attempt to bootstrap the certs/keys
114
+ # while in the process of making a network request, due to the call to
115
+ # Puppet.lookup(:ssl_host) in Puppet::SSL::Validator::DefaultValidator#setup_connection.
116
+ # This class doesn't preserve the boostrap behavior because that is handled
117
+ # outside of this class, and can only be triggered by running `puppet ssl` or
118
+ # `puppet agent`.
119
+ def resolve_ssl_context
120
+ # don't need an ssl context for http connections
121
+ return nil unless @site.use_ssl?
122
+
123
+ # if our verifier has an ssl_context, use that
124
+ ctx = @verifier.ssl_context
125
+ return ctx if ctx
126
+
127
+ # load available certs
128
+ cert = Puppet::X509::CertProvider.new
129
+ ssl = Puppet::SSL::SSLProvider.new
130
+ begin
131
+ password = cert.load_private_key_password
132
+ ssl.load_context(certname: Puppet[:certname], password: password)
133
+ rescue Puppet::SSL::SSLError => e
134
+ Puppet.log_exception(e)
135
+
136
+ # if we don't have cacerts, then create a root context that doesn't
137
+ # trust anything. The old code used to fallback to VERIFY_NONE,
138
+ # which we don't want to emulate.
139
+ ssl.create_root_context(cacerts: [])
140
+ end
141
+ end
142
+
143
+ def to_url(path)
144
+ if path =~ /^https?:\/\//
145
+ # The old Connection class accepts a URL as the request path, and sends
146
+ # it in "absolute-form" in the request line, e.g. GET https://puppet:8140/.
147
+ # See https://httpwg.org/specs/rfc7230.html#absolute-form. It just so happens
148
+ # to work because HTTP 1.1 servers are required to accept absolute-form even
149
+ # though clients are only supposed to send them to proxies, so the proxy knows
150
+ # what upstream server to CONNECT to. This method creates a URL using the
151
+ # scheme/host/port that the connection was created with, and appends the path
152
+ # and query portions of the absolute-form. The resulting request will use "origin-form"
153
+ # as it should have done all along.
154
+ abs_form = URI(path)
155
+ url = URI("#{@site.addr}/#{normalize_path(abs_form.path)}")
156
+ url.query = abs_form.query if abs_form.query
157
+ url
158
+ else
159
+ URI("#{@site.addr}/#{normalize_path(path)}")
160
+ end
161
+ end
162
+
163
+ def normalize_path(path)
164
+ if path[0] == '/'
165
+ path[1..-1]
166
+ else
167
+ path
168
+ end
169
+ end
170
+
171
+ def with_error_handling(&block)
172
+ yield
173
+ rescue Puppet::HTTP::TooManyRedirects => e
174
+ raise Puppet::Network::HTTP::RedirectionLimitExceededException.new(_("Too many HTTP redirections for %{host}:%{port}") % { host: @host, port: @port }, e)
175
+ rescue Puppet::HTTP::HTTPError => e
176
+ Puppet.log_exception(e, e.message)
177
+ case e.cause
178
+ when Net::OpenTimeout, Net::ReadTimeout, Net::HTTPError, EOFError
179
+ raise e.cause
180
+ else
181
+ raise e
182
+ end
183
+ end
184
+ end
@@ -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
 
@@ -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,14 +13,13 @@ 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
19
20
  end
20
21
  def self.http_client_class=(klass)
21
22
  @http_client_class = klass
22
- Puppet.runtime['http'] = Puppet::HTTP::ExternalClient.new(klass)
23
23
  end
24
24
 
25
25
  # Retrieve a connection for the given host and port.
@@ -266,7 +266,7 @@ class Puppet::Node::Environment
266
266
  # @param name [String] The module name
267
267
  # @return [Puppet::Module, nil] The module if found, else nil
268
268
  def module(name)
269
- modules.find {|mod| mod.name == name}
269
+ modules_by_name[name]
270
270
  end
271
271
 
272
272
  # Locate a module instance by the full forge name (EG authorname/module)
@@ -298,7 +298,7 @@ class Puppet::Node::Environment
298
298
  if @modules.nil?
299
299
  module_references = []
300
300
  project = Puppet.lookup(:bolt_project) { nil }
301
- seen_modules = if project
301
+ seen_modules = if project && project.load_as_module?
302
302
  module_references << project.to_h
303
303
  { project.name => true }
304
304
  else
@@ -327,6 +327,12 @@ class Puppet::Node::Environment
327
327
  @modules
328
328
  end
329
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
+
330
336
  # Generate a warning if the given directory in a module path entry is named `lib`.
331
337
  #
332
338
  # @api private
@@ -335,9 +341,10 @@ class Puppet::Node::Environment
335
341
  # @param name [String] The directory name
336
342
  def warn_about_mistaken_path(path, name)
337
343
  if name == "lib"
338
- Puppet.debug("Warning: Found directory named 'lib' in module path ('#{path}/lib'); unless " +
339
- "you are expecting to load a module named 'lib', your module path may be set " +
340
- "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
+ }
341
348
  end
342
349
  end
343
350
 
@@ -116,8 +116,25 @@ class Puppet::Node::Facts
116
116
  @timestamp = Time.now
117
117
  end
118
118
 
119
+ def to_yaml
120
+ facts_to_display = Psych.parse_stream(YAML.dump(self))
121
+ quote_special_strings(facts_to_display)
122
+ end
123
+
119
124
  private
120
125
 
126
+ def quote_special_strings(fact_hash)
127
+ fact_hash.grep(Psych::Nodes::Scalar).each do |node|
128
+ next unless node.value =~ /:/
129
+
130
+ node.plain = false
131
+ node.quoted = true
132
+ node.style = Psych::Nodes::Scalar::DOUBLE_QUOTED
133
+ end
134
+
135
+ fact_hash.yaml
136
+ end
137
+
121
138
  def sanitize_fact(fact)
122
139
  if fact.is_a? Hash then
123
140
  ret = {}
@@ -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|
@@ -424,7 +432,6 @@ module Pal
424
432
  begin
425
433
  node.sanitize()
426
434
  compiler = create_internal_compiler(internal_compiler_class, node)
427
- add_variables(compiler.topscope, pal_variables)
428
435
 
429
436
  case internal_compiler_class
430
437
  when :script
@@ -435,11 +442,31 @@ module Pal
435
442
  overrides[:pal_catalog_compiler] = overrides[:pal_compiler] = pal_compiler
436
443
  end
437
444
 
445
+ # When scripting the trusted data are always local; default is to set them anyway
446
+ # When compiling for a catalog, the catalog compiler does this
447
+ if set_local_facts
448
+ compiler.topscope.set_trusted(node.trusted_data)
449
+
450
+ # Server facts are always about the local node's version etc.
451
+ compiler.topscope.set_server_facts(node.server_facts)
452
+
453
+ # Set $facts for the node running the script
454
+ facts_hash = node.facts.nil? ? {} : node.facts.values
455
+ compiler.topscope.set_facts(facts_hash)
456
+
457
+ # create the $settings:: variables
458
+ compiler.topscope.merge_settings(node.environment.name, false)
459
+ end
460
+
438
461
  # Make compiler available to Puppet#lookup and injection in functions
439
462
  # TODO: The compiler instances should be available under non PAL use as well!
440
463
  # TRANSLATORS: Do not translate, symbolic name
441
464
  Puppet.override(overrides, "PAL::with_#{internal_compiler_class}_compiler") do
442
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))
443
470
  # wrap the internal compiler to prevent it from leaking in the PAL API
444
471
  if block_given?
445
472
  yield(pal_compiler)