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
@@ -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
@@ -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
@@ -77,6 +77,26 @@ module Puppet::Parser::Functions
77
77
  # @api private
78
78
  class AnonymousModuleAdapter < Puppet::Pops::Adaptable::Adapter
79
79
  attr_accessor :module
80
+
81
+ def self.create_adapter(env)
82
+ adapter = super(env)
83
+ adapter.module = Module.new do
84
+ @metadata = {}
85
+
86
+ def self.all_function_info
87
+ @metadata
88
+ end
89
+
90
+ def self.get_function_info(name)
91
+ @metadata[name]
92
+ end
93
+
94
+ def self.add_function_info(name, info)
95
+ @metadata[name] = info
96
+ end
97
+ end
98
+ adapter
99
+ end
80
100
  end
81
101
 
82
102
  @environment_module_lock = Puppet::Concurrent::Lock.new
@@ -87,23 +107,7 @@ module Puppet::Parser::Functions
87
107
  # @api private
88
108
  def self.environment_module(env)
89
109
  @environment_module_lock.synchronize do
90
- AnonymousModuleAdapter.adapt(env) do |a|
91
- a.module ||= Module.new do
92
- @metadata = {}
93
-
94
- def self.all_function_info
95
- @metadata
96
- end
97
-
98
- def self.get_function_info(name)
99
- @metadata[name]
100
- end
101
-
102
- def self.add_function_info(name, info)
103
- @metadata[name] = info
104
- end
105
- end
106
- end.module
110
+ AnonymousModuleAdapter.adapt(env).module
107
111
  end
108
112
  end
109
113
 
@@ -1,5 +1,9 @@
1
1
  Puppet::Parser::Functions::newfunction(:create_resources, :arity => -3, :doc => <<-'ENDHEREDOC') do |args|
2
2
  Converts a hash into a set of resources and adds them to the catalog.
3
+
4
+ **Note**: Use this function selectively. It's generally better to write resources in
5
+ [Puppet](https://puppet.com/docs/puppet/latest/lang_resources.html), as
6
+ resources created with `create_resource` are difficult to read and troubleshoot.
3
7
 
4
8
  This function takes two mandatory arguments: a resource type, and a hash describing
5
9
  a set of resources. The hash should be in the form `{title => {parameters} }`:
@@ -33,7 +37,7 @@ Puppet::Parser::Functions::newfunction(:create_resources, :arity => -3, :doc =>
33
37
  as native resources.
34
38
 
35
39
  Virtual and Exported resources may be created by prefixing the type name
36
- with @ or @@ respectively. For example, the $myusers hash may be exported
40
+ with @ or @@ respectively. For example, the $myusers hash may be exported
37
41
  in the following manner:
38
42
 
39
43
  create_resources("@@user", $myusers)
@@ -42,9 +46,9 @@ Puppet::Parser::Functions::newfunction(:create_resources, :arity => -3, :doc =>
42
46
 
43
47
  create_resources("@user", $myusers)
44
48
 
45
- Note that `create_resources` will filter out parameter values that are `undef` so that normal
46
- data binding and puppet default value expressions are considered (in that order) for the
47
- final value of a parameter (just as when setting a parameter to `undef` in a puppet language
49
+ Note that `create_resources` filters out parameter values that are `undef` so that normal
50
+ data binding and Puppet default value expressions are considered (in that order) for the
51
+ final value of a parameter (just as when setting a parameter to `undef` in a Puppet language
48
52
  resource declaration).
49
53
  ENDHEREDOC
50
54
  if Puppet[:tasks]
@@ -63,9 +67,9 @@ Puppet::Parser::Functions::newfunction(:create_resources, :arity => -3, :doc =>
63
67
  defaults ||= {}
64
68
  type_name = type.sub(/^@{1,2}/, '').downcase
65
69
 
66
- # Get file/line information from the puppet stack (where call comes from in puppet source)
67
- # If relayed via other puppet functions in ruby that do not nest their calls, the source position
68
- # will be in the original puppet source.
70
+ # Get file/line information from the Puppet stack (where call comes from in Puppet source)
71
+ # If relayed via other Puppet functions in ruby that do not nest their calls, the source position
72
+ # will be in the original Puppet source.
69
73
  #
70
74
  file, line = Puppet::Pops::PuppetStack.top_of_stack
71
75
 
@@ -43,6 +43,7 @@ as an array in the form `[key, value]` and returns a hash containing the results
43
43
  $data = { "orange" => 0, "blueberry" => 1, "raspberry" => 2 }
44
44
  $filtered_data = $data.filter |$items| { $items[0] =~ /berry$/ }
45
45
  # $filtered_data = {blueberry => 1, raspberry => 2}
46
+ ~~~
46
47
 
47
48
  When the first argument is an array and the lambda has two parameters, Puppet passes the
48
49
  array's indexes (enumerated from 0) in the first parameter and its values in the second
@@ -338,10 +338,11 @@ class Puppet::Parser::Resource < Puppet::Resource
338
338
  end
339
339
 
340
340
  def replace_sensitive_data
341
- parameters.each_pair do |name, param|
341
+ parameters.keys.each do |name|
342
+ param = parameters[name]
342
343
  if param.value.is_a?(Puppet::Pops::Types::PSensitiveType::Sensitive)
343
344
  @sensitive_parameters << name
344
- param.value = param.value.unwrap
345
+ parameters[name] = Puppet::Parser::Resource::Param.from_param(param, param.value.unwrap)
345
346
  end
346
347
  end
347
348
  end
@@ -26,4 +26,10 @@ class Puppet::Parser::Resource::Param
26
26
  def to_s
27
27
  "#{self.name} => #{self.value}"
28
28
  end
29
+
30
+ def self.from_param(param, value)
31
+ new_param = param.dup
32
+ new_param.value = value
33
+ return new_param
34
+ end
29
35
  end
@@ -81,7 +81,7 @@ class Puppet::Parser::TypeLoader
81
81
  end
82
82
 
83
83
  def parse_file(file)
84
- Puppet.debug("importing '#{file}' in environment #{environment}")
84
+ Puppet.debug { "importing '#{file}' in environment #{environment}" }
85
85
  parser = Puppet::Parser::ParserFactory.parser
86
86
  parser.file = file
87
87
  return parser.parse
@@ -118,7 +118,7 @@ class Puppet::Parser::TypeLoader
118
118
  # still be parsed. Mark this file as loaded so that
119
119
  # it would not be parsed next time (handle it as if
120
120
  # it was successfully parsed).
121
- Puppet.debug("Unable to parse '#{file}': #{e.message}")
121
+ Puppet.debug { "Unable to parse '#{file}': #{e.message}" }
122
122
  end
123
123
  else
124
124
  loaded_asts << parse_file(file)
@@ -69,11 +69,7 @@ module Adaptable
69
69
  #
70
70
  def self.get(o)
71
71
  attr_name = self_attr_name
72
- if o.instance_variable_defined?(attr_name)
73
- o.instance_variable_get(attr_name)
74
- else
75
- nil
76
- end
72
+ o.instance_variable_get(attr_name)
77
73
  end
78
74
 
79
75
  # Returns an existing adapter for the given object, or creates a new adapter if the
@@ -94,14 +90,13 @@ module Adaptable
94
90
  #
95
91
  def self.adapt(o, &block)
96
92
  attr_name = self_attr_name
97
- value = o.instance_variable_get(attr_name) if o.instance_variable_defined?(attr_name)
93
+ value = o.instance_variable_get(attr_name)
98
94
  adapter = value || associate_adapter(create_adapter(o), o)
99
95
  if block_given?
100
- case block.arity
101
- when 1
102
- block.call(adapter)
103
- else
104
- block.call(adapter, o)
96
+ if block.arity == 1
97
+ block.call(adapter)
98
+ else
99
+ block.call(adapter, o)
105
100
  end
106
101
  end
107
102
  adapter
@@ -127,8 +122,7 @@ module Adaptable
127
122
  def self.adapt_new(o, &block)
128
123
  adapter = associate_adapter(create_adapter(o), o)
129
124
  if block_given?
130
- case block.arity
131
- when 1
125
+ if block.arity == 1
132
126
  block.call(adapter)
133
127
  else
134
128
  block.call(adapter, o)
@@ -99,6 +99,13 @@ module Adapters
99
99
 
100
100
  class PathsAndNameCacheAdapter < Puppet::Pops::Adaptable::Adapter
101
101
  attr_accessor :cache, :paths
102
+
103
+ def self.create_adapter(env)
104
+ adapter = super(env)
105
+ adapter.paths = env.modulepath.map { |p| Pathname.new(p) }
106
+ adapter.cache = {}
107
+ adapter
108
+ end
102
109
  end
103
110
 
104
111
  # Attempts to find the module that `instance` originates from by looking at it's {SourcePosAdapter} and
@@ -117,10 +124,7 @@ module Adapters
117
124
  def self.loader_name_by_source(environment, instance, file)
118
125
  file = instance.file if file.nil?
119
126
  return nil if file.nil? || EMPTY_STRING == file
120
- pn_adapter = PathsAndNameCacheAdapter.adapt(environment) do |a|
121
- a.paths ||= environment.modulepath.map { |p| Pathname.new(p) }
122
- a.cache ||= {}
123
- end
127
+ pn_adapter = PathsAndNameCacheAdapter.adapt(environment)
124
128
  dir = File.dirname(file)
125
129
  pn_adapter.cache.fetch(dir) do |key|
126
130
  mod = find_module_for_dir(environment, pn_adapter.paths, dir)
@@ -45,9 +45,7 @@ class Puppet::Pops::Evaluator::Collectors::AbstractCollector
45
45
  return false if objects.empty?
46
46
 
47
47
  if @overrides and !objects.empty?
48
- overrides[:source].meta_def(:child_of?) do |klass|
49
- true
50
- end
48
+ overrides[:source].override = true
51
49
 
52
50
  objects.each do |res|
53
51
  unless @collected.include?(res.ref)
@@ -876,11 +876,11 @@ class EvaluatorImpl
876
876
  def eval_ApplyExpression(o, scope)
877
877
  # All expressions are wrapped in an ApplyBlockExpression so we can identify the contents of
878
878
  # that block. However we don't want to serialize the block expression, so unwrap here.
879
- body = if o.body.statements.count > 1
880
- Model::BlockExpression.from_asserted_hash(o.body._pcore_init_hash)
881
- else
882
- o.body.statements[0]
883
- end
879
+ body = if o.body.statements.count == 1
880
+ o.body.statements[0]
881
+ else
882
+ Model::BlockExpression.from_asserted_hash(o.body._pcore_init_hash)
883
+ end
884
884
 
885
885
  Puppet.lookup(:apply_executor).apply(unfold([], o.arguments, scope), body, scope)
886
886
  end
@@ -79,9 +79,9 @@ class Runtime3Converter
79
79
 
80
80
  def convert_String(o, scope, undef_value)
81
81
  # Although wasteful, a dup is needed because user code may mutate these strings when applying
82
- # Resources. This does not happen when in master mode since it only uses Resources that are
82
+ # Resources. This does not happen when in server mode since it only uses Resources that are
83
83
  # in puppet core and those are all safe.
84
- o.frozen? && !Puppet.run_mode.master? ? o.dup : o
84
+ o.frozen? && !Puppet.run_mode.server? ? o.dup : o
85
85
  end
86
86
 
87
87
  def convert_Object(o, scope, undef_value)
@@ -920,5 +920,10 @@ module Issues
920
920
  LOADER_FAILURE = issue :LOADER_FAILURE, :type do
921
921
  _('Failed to load: %{type_name}') % { type: type }
922
922
  end
923
+
924
+ DEPRECATED_APP_ORCHESTRATION = issue :DEPRECATED_APP_ORCHESTRATION, :klass do
925
+ _("Use of the application-orchestration %{expr} is deprecated. See https://puppet.com/docs/puppet/5.5/deprecated_language.html" % { expr: label(klass) })
926
+ end
927
+
923
928
  end
924
929
  end
@@ -7,10 +7,12 @@ module Loader
7
7
  #
8
8
  # @api private
9
9
  class Runtime3TypeLoader < BaseLoader
10
- def initialize(parent_loader, loaders, environment, env_path)
10
+ attr_reader :resource_3x_loader
11
+
12
+ def initialize(parent_loader, loaders, environment, resource_3x_loader)
11
13
  super(parent_loader, environment.name)
12
14
  @environment = environment
13
- @resource_3x_loader = env_path.nil? ? nil : ModuleLoaders.pcore_resource_type_loader_from(parent_loader, loaders, env_path)
15
+ @resource_3x_loader = resource_3x_loader
14
16
  end
15
17
 
16
18
  def discover(type, error_collector = nil, name_authority = Pcore::RUNTIME_NAME_AUTHORITY, &block)