puppet 6.13.0-x64-mingw32 → 6.18.0-x64-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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e1e3a02efdd22656cfbfbdae414dee639f1cec2fb95967d2bb782b80c7e65c68
4
- data.tar.gz: 4ac12d09f45387a22ec14258f764ad1616c414ff25f2dc0a3a85e46836fcbc2d
3
+ metadata.gz: 34037923ba5422bbf8ac993686508b9e9d549500440a20ad2bff322aed8edee7
4
+ data.tar.gz: 286aca7f2999a9814635a8357af53383d8465abac59a4902678943645a63381b
5
5
  SHA512:
6
- metadata.gz: ba0bdbb0b5cc1a80fdb3c22d17562c625bf156e30b2b9c56291f91ff5abe20aee38d2c8cf837859186ac0719d81701f4bbd30c8c524ddb1c282a924a12deeaf9
7
- data.tar.gz: 2a0c70f7202adc5a8bfa889002dc5ed2a660531cd1741d0dd28bcd3e5e4c3b1a56c096b3c1c956ae8af914899c39b2ade7d72d93e8ffc3464d1b05b79bf42186
6
+ metadata.gz: 528133db6440c7c27ebc646d38da4291d93570ddabf3ebe3a458bacefd897cba9b67218e61290a673a93dfa619f8c1f04f9eceb0bdab599a368398f877caa37f
7
+ data.tar.gz: 571cdafdd35691b056adf3e02c911c37319691e1891578a430fbfdf141504c7b0cb7a4d9a9e8e5a5a7d68293480ea9155ae57792c264445bb265672c13e51b94
data/CODEOWNERS CHANGED
@@ -11,13 +11,8 @@
11
11
  /lib/puppet/provider/service @puppetlabs/night-s-watch
12
12
  /lib/puppet/provider/user @puppetlabs/night-s-watch
13
13
 
14
- # language
15
- /lib/puppet/datatypes @puppetlabs/language
16
- /lib/puppet/functions @puppetlabs/language
17
- /lib/puppet/pal @puppetlabs/language
18
- /lib/puppet/parser @puppetlabs/language
19
- /lib/puppet/pops @puppetlabs/language
20
- /lib/puppet/syntax_checkers @puppetlabs/language
14
+ # PAL
15
+ /lib/puppet/pal @puppetlabs/bolt
21
16
 
22
17
  # puppet device
23
18
  /lib/puppet/application/device.rb @puppetlabs/networking
@@ -28,7 +28,7 @@ the [puppet-dev mailing list](https://groups.google.com/forum/#!forum/puppet-dev
28
28
  ## Getting Started
29
29
 
30
30
  * Make sure you have a [Jira account](https://tickets.puppetlabs.com).
31
- * Make sure you have a [GitHub account](https://github.com/signup/free).
31
+ * Make sure you have a [GitHub account](https://github.com/join).
32
32
  * Submit a Jira ticket for your issue if one does not already exist.
33
33
  * Clearly describe the issue including steps to reproduce when it is a bug.
34
34
  * Make sure you fill in the earliest version that you know has the issue.
@@ -89,7 +89,7 @@ user-facing strings are marked in new PRs before merging.
89
89
 
90
90
  For [changes of a trivial nature](https://puppet.com/community/trivial-patch-exemption-policy), it is not always necessary to create a new
91
91
  ticket in Jira. In this case, it is appropriate to start the first line of a
92
- commit with one of `(docs)`, `(maint)`, or `(packaging)` instead of a ticket
92
+ commit with one of `(docs)`, `(maint)`, or `(packaging)` instead of a ticket
93
93
  number.
94
94
 
95
95
  If a Jira ticket exists for the documentation commit, you can include it
@@ -117,15 +117,10 @@ respectively.
117
117
  * Sign the [Contributor License Agreement](https://cla.puppet.com).
118
118
  * Push your changes to a topic branch in your fork of the repository.
119
119
  * Submit a pull request to the repository in the puppetlabs organization.
120
- * Update your Jira ticket to mark that you have submitted code and are ready
120
+ * Update the related Jira ticket to mark that you have submitted code and are ready
121
121
  for it to be reviewed (Status: Ready for Merge).
122
- * Include a link to the pull request in the ticket.
123
- * The core team looks at Pull Requests on a regular basis in a weekly triage
124
- meeting that we hold in a public Google Hangout. The hangout is announced in
125
- the weekly status updates that are sent to the puppet-dev list. Notes are
126
- posted to the [Puppet Community community-triage
127
- repo](https://github.com/puppet-community/community-triage/tree/master/core/notes)
128
- and include a link to a YouTube recording of the hangout.
122
+ * The core team looks at pull requests on a regular basis in a weekly triage
123
+ meeting.
129
124
  * After feedback has been given we expect responses within two weeks. After two
130
125
  weeks we may close the pull request if it isn't showing any activity.
131
126
 
@@ -159,9 +154,8 @@ ensure the issue has been resolved.
159
154
 
160
155
  * [Puppet community guidelines](https://puppet.com/community/community-guidelines)
161
156
  * [Bug tracker (Jira)](https://tickets.puppetlabs.com)
162
- * [Contributor License Agreement](http://links.puppet.com/cla)
157
+ * [Contributor License Agreement](https://cla.puppet.com/)
163
158
  * [General GitHub documentation](https://help.github.com/)
164
159
  * [GitHub pull request documentation](https://help.github.com/articles/creating-a-pull-request/)
165
- * #puppet-dev IRC channel on freenode.org ([Archive](https://botbot.me/freenode/puppet-dev/))
166
160
  * [puppet-dev mailing list](https://groups.google.com/forum/#!forum/puppet-dev)
167
- * [Community PR Triage notes](https://github.com/puppet-community/community-triage/tree/master/core/notes)
161
+ * [Puppet community slack](https://slack.puppet.com)
data/Gemfile CHANGED
@@ -3,9 +3,9 @@ source ENV['GEM_SOURCE'] || "https://rubygems.org"
3
3
  gemspec
4
4
 
5
5
  def location_for(place, fake_version = nil)
6
- if place =~ /^(git[:@][^#]*)#(.*)/
6
+ if place.is_a?(String) && place =~ /^(git[:@][^#]*)#(.*)/
7
7
  [fake_version, { git: $1, branch: $2, require: false }].compact
8
- elsif place =~ /^file:\/\/(.*)/
8
+ elsif place.is_a?(String) && place =~ /^file:\/\/(.*)/
9
9
  ['>= 0', { path: File.expand_path($1), require: false }]
10
10
  else
11
11
  [place, { require: false }]
@@ -19,6 +19,8 @@ gem "hiera", *location_for(ENV['HIERA_LOCATION']) if ENV.has_key?('HIERA_LOCATIO
19
19
  gem "semantic_puppet", *location_for(ENV['SEMANTIC_PUPPET_LOCATION'] || ["~> 1.0"])
20
20
  gem "puppet-resource_api", *location_for(ENV['RESOURCE_API_LOCATION'] || ["~> 1.5"])
21
21
 
22
+ gem "scanf" if RUBY_VERSION.to_f >= 2.7
23
+
22
24
  group(:features) do
23
25
  gem 'diff-lcs', '~> 1.3', require: false
24
26
  gem 'hiera-eyaml', *location_for(ENV['HIERA_EYAML_LOCATION'])
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- puppet (6.13.0)
4
+ puppet (6.18.0)
5
5
  CFPropertyList (~> 2.2)
6
6
  concurrent-ruby (~> 1.0)
7
7
  deep_merge (~> 1.0)
@@ -20,16 +20,18 @@ GEM
20
20
  addressable (2.7.0)
21
21
  public_suffix (>= 2.0.2, < 5.0)
22
22
  artifactory (2.8.2)
23
- ast (2.4.0)
24
- coderay (1.1.2)
25
- concurrent-ruby (1.1.6)
23
+ ast (2.4.1)
24
+ coderay (1.1.3)
25
+ concurrent-ruby (1.1.7)
26
26
  crack (0.4.3)
27
27
  safe_yaml (~> 1.0.0)
28
- csv (3.1.2)
28
+ csv (3.1.5)
29
29
  deep_merge (1.2.1)
30
- diff-lcs (1.3)
30
+ diff-lcs (1.4.4)
31
31
  docopt (0.6.1)
32
- facter (2.5.7)
32
+ facter (4.0.35)
33
+ hocon (~> 1.3)
34
+ thor (>= 1.0.1, < 2.0)
33
35
  fast_gettext (1.1.2)
34
36
  gettext (3.2.9)
35
37
  locale (>= 2.0.5)
@@ -38,46 +40,47 @@ GEM
38
40
  fast_gettext (~> 1.1.0)
39
41
  gettext (>= 3.0.2, < 3.3.0)
40
42
  locale
41
- hashdiff (1.0.0)
43
+ hashdiff (1.0.1)
42
44
  hiera (3.6.0)
43
45
  hiera-eyaml (3.2.0)
44
46
  highline (~> 1.6.19)
45
47
  optimist
46
48
  highline (1.6.21)
47
- hocon (1.3.0)
49
+ hocon (1.3.1)
48
50
  hpricot (0.8.6)
49
51
  httpclient (2.8.3)
50
52
  json-schema (2.8.1)
51
53
  addressable (>= 2.4)
52
54
  locale (2.1.3)
53
55
  memory_profiler (0.9.14)
54
- method_source (0.9.2)
56
+ method_source (1.0.0)
55
57
  minitar (0.9)
56
58
  msgpack (1.3.3)
57
- multi_json (1.14.1)
59
+ multi_json (1.15.0)
58
60
  mustache (1.1.1)
59
- optimist (3.0.0)
60
- packaging (0.99.56)
61
+ optimist (3.0.1)
62
+ packaging (0.99.68)
61
63
  artifactory (~> 2)
64
+ csv (= 3.1.5)
62
65
  rake (>= 12.3)
63
66
  release-metrics
64
- parallel (1.19.1)
65
- parser (2.7.0.2)
66
- ast (~> 2.4.0)
67
+ parallel (1.19.2)
68
+ parser (2.7.1.4)
69
+ ast (~> 2.4.1)
67
70
  powerpack (0.1.2)
68
- pry (0.12.2)
69
- coderay (~> 1.1.0)
70
- method_source (~> 0.9.0)
71
- public_suffix (4.0.3)
72
- puppet-resource_api (1.8.7)
71
+ pry (0.13.1)
72
+ coderay (~> 1.1)
73
+ method_source (~> 1.0)
74
+ public_suffix (4.0.5)
75
+ puppet-resource_api (1.8.13)
73
76
  hocon (>= 1.0)
74
- puppetserver-ca (1.5.0)
75
- facter (>= 2.0.1, < 4)
77
+ puppetserver-ca (1.8.0)
78
+ facter (>= 2.0.1, < 5)
76
79
  racc (1.4.9)
77
80
  rainbow (2.2.2)
78
81
  rake
79
82
  rake (12.3.3)
80
- rdiscount (2.2.0.1)
83
+ rdiscount (2.2.0.2)
81
84
  rdoc (6.2.1)
82
85
  release-metrics (1.1.0)
83
86
  csv
@@ -90,9 +93,9 @@ GEM
90
93
  rspec-core (~> 3.9.0)
91
94
  rspec-expectations (~> 3.9.0)
92
95
  rspec-mocks (~> 3.9.0)
93
- rspec-core (3.9.1)
94
- rspec-support (~> 3.9.1)
95
- rspec-expectations (3.9.0)
96
+ rspec-core (3.9.2)
97
+ rspec-support (~> 3.9.3)
98
+ rspec-expectations (3.9.2)
96
99
  diff-lcs (>= 1.2.0, < 2.0)
97
100
  rspec-support (~> 3.9.0)
98
101
  rspec-its (1.3.0)
@@ -101,7 +104,7 @@ GEM
101
104
  rspec-mocks (3.9.1)
102
105
  diff-lcs (>= 1.2.0, < 2.0)
103
106
  rspec-support (~> 3.9.0)
104
- rspec-support (3.9.2)
107
+ rspec-support (3.9.3)
105
108
  rubocop (0.49.1)
106
109
  parallel (~> 1.10)
107
110
  parser (>= 2.3.3.1, < 3.0)
@@ -111,18 +114,19 @@ GEM
111
114
  unicode-display_width (~> 1.0, >= 1.0.1)
112
115
  rubocop-i18n (1.2.0)
113
116
  rubocop (~> 0.49.0)
114
- ruby-prof (1.2.0)
117
+ ruby-prof (1.4.1)
115
118
  ruby-progressbar (1.10.1)
116
119
  safe_yaml (1.0.5)
117
120
  semantic_puppet (1.0.2)
118
121
  text (1.3.1)
119
- unicode-display_width (1.6.1)
122
+ thor (1.0.1)
123
+ unicode-display_width (1.7.0)
120
124
  vcr (5.1.0)
121
- webmock (3.8.2)
125
+ webmock (3.8.3)
122
126
  addressable (>= 2.3.6)
123
127
  crack (>= 0.3.2)
124
128
  hashdiff (>= 0.4.0, < 2.0.0)
125
- yard (0.9.24)
129
+ yard (0.9.25)
126
130
 
127
131
  PLATFORMS
128
132
  ruby
data/README.md CHANGED
@@ -1,5 +1,4 @@
1
- Puppet
2
- ======
1
+ # Puppet
3
2
 
4
3
  [![Travis Status](https://travis-ci.com/puppetlabs/puppet.svg?branch=master)](https://travis-ci.com/puppetlabs/puppet)
5
4
  [![Appveyor Status](https://ci.appveyor.com/api/projects/status/cvhpypd4504sevqq/branch/master?svg=true)](https://ci.appveyor.com/project/puppetlabs/puppet/branch/master)
@@ -10,31 +9,28 @@ Puppet, an automated administrative engine for your Linux, Unix, and Windows sys
10
9
  administrative tasks (such as adding users, installing packages, and updating server
11
10
  configurations) based on a centralized specification.
12
11
 
13
- Documentation
14
- -------------
12
+ ## Documentation
15
13
 
16
14
  Documentation for Puppet and related projects can be found online at the
17
15
  [Puppet Docs site](https://puppet.com/docs).
18
16
 
19
- HTTP API
20
- --------
17
+ ### HTTP API
18
+
21
19
  [HTTP API Index](https://puppet.com/docs/puppet/5.5/http_api/http_api_index.html)
22
20
 
23
- Installation
24
- ------------
21
+ ## Installation
25
22
 
26
23
  The best way to run Puppet is with [Puppet Enterprise (PE)](https://puppet.com/products/puppet-enterprise/),
27
24
  which also includes orchestration features, a web console, and professional support.
28
25
  The PE documentation is [available here.](https://puppet.com/docs/pe/latest)
29
26
 
30
27
  To install an open source release of Puppet,
31
- [see the installation guide on the docs site.](https://puppet.com/docs/puppet/5.5/install_pre.html)
28
+ [see the installation guide on the docs site.](https://puppet.com/docs/puppet/latest/installing_and_upgrading.html)
32
29
 
33
30
  If you need to run Puppet from source as a tester or developer,
34
- see the [Running Puppet from Source](https://docs.puppet.com/puppet/3.8/from_source.html) guide on the docs site.
31
+ see the [Quick Start to Developing on Puppet](docs/quickstart.md) guide.
35
32
 
36
- Developing and Contributing
37
- ------
33
+ ## Developing and Contributing
38
34
 
39
35
  We'd love to get contributions from you! For a quick guide to getting your
40
36
  system setup for developing, take a look at our [Quickstart
@@ -45,32 +41,29 @@ in.
45
41
  For more complete docs on developing with Puppet, take a look at the
46
42
  rest of the [developer documents](https://github.com/puppetlabs/puppet/blob/master/docs/index.md).
47
43
 
48
- Licensing
49
- ---------
44
+ ## Licensing
50
45
 
51
46
  See [LICENSE](https://github.com/puppetlabs/puppet/blob/master/LICENSE) file. Puppet is licensed by Puppet, Inc. under the Apache license. Puppet, Inc. can be contacted at: info@puppet.com
52
47
 
53
- Support
54
- -------
48
+ ## Support
55
49
 
56
- Please log tickets and issues at our [JIRA tracker](https://tickets.puppetlabs.com). A [mailing
50
+ Please log tickets and issues at our [JIRA tracker](https://tickets.puppetlabs.com). A [mailing
57
51
  list](https://groups.google.com/forum/?fromgroups#!forum/puppet-users) is
58
- available for asking questions and getting help from others. In addition, there
59
- is an active #puppet channel on Freenode.
52
+ available for asking questions and getting help from others, or if you prefer chat, we also have a [Puppet Community slack.](https://puppetcommunity.slack.com/)
60
53
 
61
54
  We use semantic version numbers for our releases and recommend that users stay
62
55
  as up-to-date as possible by upgrading to patch releases and minor releases as
63
56
  they become available.
64
57
 
65
- Bugfixes and ongoing development will occur in minor releases for the current
58
+ Bug fixes and ongoing development will occur in minor releases for the current
66
59
  major version. Security fixes will be backported to a previous major version on
67
60
  a best-effort basis, until the previous major version is no longer maintained.
68
61
 
69
- For example: If a security vulnerability is discovered in Puppet 4.1.1, we
70
- would fix it in the 4 series, most likely as 4.1.2. Maintainers would then make
71
- a best effort to backport that fix onto the latest Puppet 3 release.
62
+ For example: If a security vulnerability is discovered in Puppet 6.1.1, we
63
+ would fix it in the 6 series, most likely as 6.1.2. Maintainers would then make
64
+ a best effort to backport that fix onto the latest Puppet 5 release.
72
65
 
73
66
  Long-term support, including security patches and bug fixes, is available for
74
67
  commercial customers. Please see the following page for more details:
75
68
 
76
- [Puppet Enterprise Support Lifecycle](https://puppet.com/misc/puppet-enterprise-lifecycle)
69
+ [Puppet Enterprise Support Lifecycle](https://puppet.com/docs/puppet-enterprise/product-support-lifecycle/)
@@ -160,7 +160,7 @@ class WindowsDaemon < Win32::Daemon
160
160
 
161
161
  def parse_runinterval(puppet_path)
162
162
  begin
163
- runinterval = %x{ #{puppet_path} agent --configprint runinterval }.to_i
163
+ runinterval = %x{ #{puppet_path} config --section agent --log_level notice print runinterval }.to_i
164
164
  if runinterval == 0
165
165
  runinterval = 1800
166
166
  log_err("Failed to determine runinterval, defaulting to #{runinterval} seconds")
@@ -175,8 +175,8 @@ class WindowsDaemon < Win32::Daemon
175
175
 
176
176
  def parse_log_level(puppet_path,cmdline_debug)
177
177
  begin
178
- loglevel = %x{ #{puppet_path} agent --configprint log_level}.chomp
179
- unless loglevel
178
+ loglevel = %x{ #{puppet_path} config --section agent --log_level notice print log_level }.chomp
179
+ unless loglevel && respond_to?("log_#{loglevel}")
180
180
  loglevel = :notice
181
181
  log_err("Failed to determine loglevel, defaulting to #{loglevel}")
182
182
  end
@@ -1,4 +1,5 @@
1
1
  require 'puppet/version'
2
+ require 'puppet/concurrent/synchronized'
2
3
 
3
4
  if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.3.0")
4
5
  raise LoadError, "Puppet #{Puppet.version} requires Ruby 2.3.0 or greater, found Ruby #{RUBY_VERSION.dup}."
@@ -6,6 +7,8 @@ end
6
7
 
7
8
  Puppet::OLDEST_RECOMMENDED_RUBY_VERSION = '2.3.0'
8
9
 
10
+ $LOAD_PATH.extend(Puppet::Concurrent::Synchronized)
11
+
9
12
  # see the bottom of the file for further inclusions
10
13
  # Also see the new Vendor support - towards the end
11
14
  #
@@ -150,21 +153,45 @@ module Puppet
150
153
  # @param args [Array<String>] the command line arguments to use for initialization
151
154
  # @param require_config [Boolean] controls loading of Puppet configuration files
152
155
  # @param global_settings [Boolean] controls push to global context after settings object initialization
156
+ # @param runtime_implementations [Hash<Symbol, Object>] runtime implementations to register
153
157
  # @return [void]
154
- def self.initialize_settings(args = [], require_config = true, push_settings_globally = true)
155
- do_initialize_settings_for_run_mode(:user, args, require_config, push_settings_globally)
158
+ def self.initialize_settings(args = [], require_config = true, push_settings_globally = true, runtime_implementations = {})
159
+ do_initialize_settings_for_run_mode(:user, args, require_config, push_settings_globally, runtime_implementations)
160
+ end
161
+
162
+ def self.vendored_modules
163
+ dir = Puppet[:vendormoduledir]
164
+ if dir && File.directory?(dir)
165
+ Dir.entries(dir)
166
+ .reject { |f| f =~ /^\./ }
167
+ .map { |f| File.join(dir, f, "lib") }
168
+ .select { |d| FileTest.directory?(d) }
169
+ else
170
+ []
171
+ end
156
172
  end
173
+ private_class_method :vendored_modules
174
+
175
+ def self.initialize_load_path
176
+ $LOAD_PATH.unshift(Puppet[:libdir])
177
+ $LOAD_PATH.concat(vendored_modules)
178
+ end
179
+ private_class_method :initialize_load_path
157
180
 
158
181
  # private helper method to provide the implementation details of initializing for a run mode,
159
182
  # but allowing us to control where the deprecation warning is issued
160
- def self.do_initialize_settings_for_run_mode(run_mode, args, require_config = true, push_settings_globally = true)
183
+ def self.do_initialize_settings_for_run_mode(run_mode, args, require_config, push_settings_globally, runtime_implementations)
161
184
  Puppet.settings.initialize_global_settings(args, require_config)
162
185
  run_mode = Puppet::Util::RunMode[run_mode]
163
186
  Puppet.settings.initialize_app_defaults(Puppet::Settings.app_defaults_for_run_mode(run_mode))
164
187
  if push_settings_globally
188
+ initialize_load_path
165
189
  push_context_global(Puppet.base_context(Puppet.settings), "Initial context after settings initialization")
166
190
  Puppet::Parser::Functions.reset
167
191
  end
192
+ runtime_implementations.each_pair do |name, impl|
193
+ Puppet.runtime[name] = impl
194
+ end
168
195
  end
169
196
  private_class_method :do_initialize_settings_for_run_mode
170
197
 
@@ -218,10 +245,7 @@ module Puppet
218
245
 
219
246
  {
220
247
  :environments => Puppet::Environments::Cached.new(Puppet::Environments::Combined.new(*loaders)),
221
- :http_pool => proc {
222
- require 'puppet/network/http'
223
- Puppet::Network::HTTP::NoCachePool.new
224
- },
248
+ :http_pool => proc { Puppet.runtime[:http].pool },
225
249
  :ssl_context => proc {
226
250
  begin
227
251
  cert = Puppet::X509::CertProvider.new
@@ -236,7 +260,8 @@ module Puppet
236
260
  raise e
237
261
  end
238
262
  },
239
- :ssl_host => proc { Puppet::SSL::Host.localhost },
263
+ :ssl_host => proc { Puppet::SSL::Host.localhost(true) },
264
+ :http_session => proc { Puppet.runtime[:http].create_session },
240
265
  :plugins => proc { Puppet::Plugins::Configuration.load_plugins },
241
266
  :rich_data => false
242
267
  }
@@ -322,7 +347,6 @@ module Puppet
322
347
 
323
348
  require 'puppet/runtime'
324
349
  @runtime = Puppet::Runtime.instance
325
- @runtime['http'] = proc { Puppet::HTTP::Client.new }
326
350
  end
327
351
 
328
352
  # This feels weird to me; I would really like for us to get to a state where there is never a "require" statement
@@ -43,6 +43,7 @@ class Puppet::Agent
43
43
  end
44
44
 
45
45
  result = nil
46
+ wait_for_lock_deadline = nil
46
47
  block_run = Puppet::Application.controlled_run do
47
48
  splay client_options.fetch :splay, Puppet[:splay]
48
49
  result = run_in_fork(should_fork) do
@@ -60,16 +61,29 @@ class Puppet::Agent
60
61
  end
61
62
  end
62
63
  rescue Puppet::LockError
63
- Puppet.notice _("Run of %{client_class} already in progress; skipping (%{lockfile_path} exists)") % { client_class: client_class, lockfile_path: lockfile_path }
64
- return
64
+ now = Time.now.to_i
65
+ wait_for_lock_deadline ||= now + Puppet[:maxwaitforlock]
66
+
67
+ if Puppet[:waitforlock] < 1
68
+ Puppet.notice _("Run of %{client_class} already in progress; skipping (%{lockfile_path} exists)") % { client_class: client_class, lockfile_path: lockfile_path }
69
+ nil
70
+ elsif now >= wait_for_lock_deadline
71
+ Puppet.notice _("Exiting now because the maxwaitforlock timeout has been exceeded.")
72
+ nil
73
+ else
74
+ Puppet.info _("Another puppet instance is already running; --waitforlock flag used, waiting for running instance to finish.")
75
+ Puppet.info _("Will try again in %{time} seconds.") % {time: Puppet[:waitforlock]}
76
+ sleep Puppet[:waitforlock]
77
+ retry
78
+ end
65
79
  rescue RunTimeoutError => detail
66
80
  Puppet.log_exception(detail, _("Execution of %{client_class} did not complete within %{runtimeout} seconds and was terminated.") %
67
81
  {client_class: client_class,
68
82
  runtimeout: Puppet[:runtimeout]})
69
- return 1
83
+ nil
70
84
  rescue StandardError => detail
71
85
  Puppet.log_exception(detail, _("Could not run %{client_class}: %{detail}") % { client_class: client_class, detail: detail })
72
- 1
86
+ nil
73
87
  end
74
88
  end
75
89
  end
@@ -95,11 +109,9 @@ class Puppet::Agent
95
109
  atForkHandler.child
96
110
  $0 = _("puppet agent: applying configuration")
97
111
  begin
98
- exit(yield)
99
- rescue SystemExit
100
- exit(-1)
112
+ exit(yield || 1)
101
113
  rescue NoMemoryError
102
- exit(-2)
114
+ exit(254)
103
115
  end
104
116
  end
105
117
  ensure
@@ -107,12 +119,6 @@ class Puppet::Agent
107
119
  end
108
120
 
109
121
  exit_code = Process.waitpid2(child_pid)
110
- case exit_code[1].exitstatus
111
- when -1
112
- raise SystemExit
113
- when -2
114
- raise NoMemoryError
115
- end
116
122
  exit_code[1].exitstatus
117
123
  end
118
124