puppet 6.12.0-universal-darwin → 6.17.0-universal-darwin

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 (412) 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 +39 -36
  6. data/README.md +18 -25
  7. data/ext/project_data.yaml +1 -1
  8. data/ext/windows/service/daemon.rb +3 -3
  9. data/lib/puppet.rb +52 -13
  10. data/lib/puppet/agent.rb +20 -14
  11. data/lib/puppet/application/agent.rb +26 -17
  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/plugin.rb +1 -0
  16. data/lib/puppet/application/resource.rb +1 -1
  17. data/lib/puppet/application/ssl.rb +4 -4
  18. data/lib/puppet/configurer.rb +65 -69
  19. data/lib/puppet/configurer/plugin_handler.rb +10 -1
  20. data/lib/puppet/confine.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 +154 -58
  24. data/lib/puppet/environments.rb +27 -20
  25. data/lib/puppet/face/facts.rb +8 -5
  26. data/lib/puppet/face/help.rb +29 -3
  27. data/lib/puppet/face/module/search.rb +5 -0
  28. data/lib/puppet/face/plugin.rb +2 -2
  29. data/lib/puppet/file_serving/http_metadata.rb +14 -2
  30. data/lib/puppet/file_serving/metadata.rb +4 -1
  31. data/lib/puppet/file_serving/terminus_selector.rb +7 -8
  32. data/lib/puppet/file_system/file_impl.rb +14 -10
  33. data/lib/puppet/file_system/memory_file.rb +6 -0
  34. data/lib/puppet/file_system/memory_impl.rb +13 -0
  35. data/lib/puppet/file_system/uniquefile.rb +12 -16
  36. data/lib/puppet/file_system/windows.rb +7 -10
  37. data/lib/puppet/forge.rb +1 -1
  38. data/lib/puppet/forge/cache.rb +1 -1
  39. data/lib/puppet/forge/repository.rb +4 -7
  40. data/lib/puppet/functions/call.rb +1 -1
  41. data/lib/puppet/functions/eyaml_lookup_key.rb +13 -8
  42. data/lib/puppet/functions/filter.rb +1 -0
  43. data/lib/puppet/functions/reduce.rb +2 -4
  44. data/lib/puppet/http.rb +5 -0
  45. data/lib/puppet/http/client.rb +293 -73
  46. data/lib/puppet/http/errors.rb +2 -0
  47. data/lib/puppet/http/external_client.rb +90 -0
  48. data/lib/puppet/http/redirector.rb +43 -7
  49. data/lib/puppet/http/resolver.rb +46 -3
  50. data/lib/puppet/http/resolver/server_list.rb +76 -16
  51. data/lib/puppet/http/resolver/settings.rb +23 -3
  52. data/lib/puppet/http/resolver/srv.rb +29 -3
  53. data/lib/puppet/http/response.rb +87 -1
  54. data/lib/puppet/http/retry_after_handler.rb +39 -0
  55. data/lib/puppet/http/service.rb +151 -7
  56. data/lib/puppet/http/service/ca.rb +76 -14
  57. data/lib/puppet/http/service/compiler.rb +319 -0
  58. data/lib/puppet/http/service/file_server.rb +206 -0
  59. data/lib/puppet/http/service/report.rb +49 -23
  60. data/lib/puppet/http/session.rb +103 -7
  61. data/lib/puppet/indirector.rb +1 -1
  62. data/lib/puppet/indirector/catalog/compiler.rb +10 -0
  63. data/lib/puppet/indirector/catalog/rest.rb +34 -0
  64. data/lib/puppet/indirector/facts/rest.rb +42 -0
  65. data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
  66. data/lib/puppet/indirector/file_bucket_file/rest.rb +48 -0
  67. data/lib/puppet/indirector/file_content/http.rb +5 -0
  68. data/lib/puppet/indirector/file_content/rest.rb +30 -0
  69. data/lib/puppet/indirector/file_metadata/http.rb +27 -8
  70. data/lib/puppet/indirector/file_metadata/rest.rb +52 -0
  71. data/lib/puppet/indirector/json.rb +1 -1
  72. data/lib/puppet/indirector/msgpack.rb +1 -1
  73. data/lib/puppet/indirector/node/rest.rb +24 -0
  74. data/lib/puppet/indirector/report/rest.rb +19 -0
  75. data/lib/puppet/indirector/report/yaml.rb +23 -0
  76. data/lib/puppet/indirector/request.rb +1 -1
  77. data/lib/puppet/indirector/rest.rb +12 -0
  78. data/lib/puppet/indirector/status/rest.rb +18 -0
  79. data/lib/puppet/loaders.rb +6 -0
  80. data/lib/puppet/metatype/manager.rb +80 -80
  81. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  82. data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
  83. data/lib/puppet/network/http/base_pool.rb +7 -2
  84. data/lib/puppet/network/http/compression.rb +7 -0
  85. data/lib/puppet/network/http/connection.rb +6 -0
  86. data/lib/puppet/network/http/connection_adapter.rb +184 -0
  87. data/lib/puppet/network/http/nocache_pool.rb +2 -0
  88. data/lib/puppet/network/http/pool.rb +13 -6
  89. data/lib/puppet/network/http_pool.rb +2 -1
  90. data/lib/puppet/node/environment.rb +11 -1
  91. data/lib/puppet/pal/catalog_compiler.rb +5 -0
  92. data/lib/puppet/pal/pal_impl.rb +4 -29
  93. data/lib/puppet/parser/ast/leaf.rb +5 -5
  94. data/lib/puppet/parser/ast/pops_bridge.rb +6 -15
  95. data/lib/puppet/parser/compiler.rb +43 -33
  96. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
  97. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
  98. data/lib/puppet/parser/environment_compiler.rb +4 -1
  99. data/lib/puppet/parser/functions.rb +18 -13
  100. data/lib/puppet/parser/functions/filter.rb +1 -0
  101. data/lib/puppet/parser/resource.rb +3 -2
  102. data/lib/puppet/parser/resource/param.rb +6 -0
  103. data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
  104. data/lib/puppet/pops/evaluator/evaluator_impl.rb +6 -6
  105. data/lib/puppet/pops/issues.rb +5 -0
  106. data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +12 -3
  107. data/lib/puppet/pops/loaders.rb +7 -5
  108. data/lib/puppet/pops/parser/evaluating_parser.rb +5 -7
  109. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
  110. data/lib/puppet/pops/types/p_object_type_extension.rb +10 -0
  111. data/lib/puppet/pops/types/type_calculator.rb +24 -0
  112. data/lib/puppet/pops/validation/checker4_0.rb +11 -1
  113. data/lib/puppet/pops/validation/tasks_checker.rb +5 -1
  114. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  115. data/lib/puppet/provider/aix_object.rb +4 -2
  116. data/lib/puppet/provider/group/aix.rb +1 -0
  117. data/lib/puppet/provider/group/groupadd.rb +57 -24
  118. data/lib/puppet/provider/group/windows_adsi.rb +3 -3
  119. data/lib/puppet/provider/package/aix.rb +17 -2
  120. data/lib/puppet/provider/package/apt.rb +78 -4
  121. data/lib/puppet/provider/package/aptitude.rb +1 -1
  122. data/lib/puppet/provider/package/dnfmodule.rb +69 -15
  123. data/lib/puppet/provider/package/dpkg.rb +14 -7
  124. data/lib/puppet/provider/package/fink.rb +20 -3
  125. data/lib/puppet/provider/package/gem.rb +41 -7
  126. data/lib/puppet/provider/package/openbsd.rb +13 -1
  127. data/lib/puppet/provider/package/pacman.rb +2 -5
  128. data/lib/puppet/provider/package/pip.rb +143 -48
  129. data/lib/puppet/provider/package/pip3.rb +0 -2
  130. data/lib/puppet/provider/package/pkg.rb +18 -5
  131. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  132. data/lib/puppet/provider/package/pkgng.rb +16 -4
  133. data/lib/puppet/provider/package/portage.rb +2 -2
  134. data/lib/puppet/provider/package/puppet_gem.rb +6 -2
  135. data/lib/puppet/provider/package/rpm.rb +6 -213
  136. data/lib/puppet/provider/package/yum.rb +109 -25
  137. data/lib/puppet/provider/package/zypper.rb +59 -1
  138. data/lib/puppet/provider/service/systemd.rb +22 -4
  139. data/lib/puppet/provider/service/windows.rb +23 -7
  140. data/lib/puppet/provider/user/aix.rb +1 -0
  141. data/lib/puppet/provider/user/directoryservice.rb +30 -5
  142. data/lib/puppet/provider/user/useradd.rb +22 -12
  143. data/lib/puppet/reports/http.rb +15 -9
  144. data/lib/puppet/reports/store.rb +1 -1
  145. data/lib/puppet/resource.rb +2 -1
  146. data/lib/puppet/resource/type.rb +8 -0
  147. data/lib/puppet/resource/type_collection.rb +20 -16
  148. data/lib/puppet/runtime.rb +31 -1
  149. data/lib/puppet/settings.rb +4 -0
  150. data/lib/puppet/settings/http_extra_headers_setting.rb +25 -0
  151. data/lib/puppet/ssl.rb +1 -0
  152. data/lib/puppet/ssl/certificate.rb +2 -1
  153. data/lib/puppet/ssl/host.rb +4 -4
  154. data/lib/puppet/ssl/oids.rb +1 -0
  155. data/lib/puppet/ssl/ssl_context.rb +2 -2
  156. data/lib/puppet/ssl/ssl_provider.rb +20 -1
  157. data/lib/puppet/ssl/state_machine.rb +81 -35
  158. data/lib/puppet/ssl/verifier_adapter.rb +9 -1
  159. data/lib/puppet/test/test_helper.rb +15 -11
  160. data/lib/puppet/transaction/report.rb +2 -2
  161. data/lib/puppet/transaction/resource_harness.rb +1 -1
  162. data/lib/puppet/trusted_external.rb +29 -1
  163. data/lib/puppet/type.rb +18 -6
  164. data/lib/puppet/type/file.rb +51 -13
  165. data/lib/puppet/type/file/checksum.rb +4 -4
  166. data/lib/puppet/type/file/source.rb +51 -60
  167. data/lib/puppet/type/group.rb +2 -2
  168. data/lib/puppet/type/package.rb +102 -10
  169. data/lib/puppet/type/service.rb +55 -8
  170. data/lib/puppet/type/user.rb +3 -28
  171. data/lib/puppet/util.rb +39 -15
  172. data/lib/puppet/util/at_fork.rb +1 -1
  173. data/lib/puppet/util/autoload.rb +4 -18
  174. data/lib/puppet/util/checksums.rb +19 -4
  175. data/lib/puppet/util/fileparsing.rb +2 -2
  176. data/lib/puppet/util/instance_loader.rb +14 -10
  177. data/lib/puppet/util/log/destinations.rb +2 -11
  178. data/lib/puppet/util/package/version/debian.rb +175 -0
  179. data/lib/puppet/util/package/version/gem.rb +15 -0
  180. data/lib/puppet/util/package/version/pip.rb +167 -0
  181. data/lib/puppet/util/package/version/range.rb +53 -0
  182. data/lib/puppet/util/package/version/range/eq.rb +14 -0
  183. data/lib/puppet/util/package/version/range/gt.rb +14 -0
  184. data/lib/puppet/util/package/version/range/gt_eq.rb +14 -0
  185. data/lib/puppet/util/package/version/range/lt.rb +14 -0
  186. data/lib/puppet/util/package/version/range/lt_eq.rb +14 -0
  187. data/lib/puppet/util/package/version/range/min_max.rb +21 -0
  188. data/lib/puppet/util/package/version/range/simple.rb +11 -0
  189. data/lib/puppet/util/package/version/rpm.rb +73 -0
  190. data/lib/puppet/util/pidlock.rb +36 -10
  191. data/lib/puppet/util/platform.rb +5 -0
  192. data/lib/puppet/util/plist.rb +6 -0
  193. data/lib/puppet/util/provider_features.rb +1 -1
  194. data/lib/puppet/util/reference.rb +1 -1
  195. data/lib/puppet/util/rpm_compare.rb +193 -0
  196. data/lib/puppet/util/storage.rb +0 -1
  197. data/lib/puppet/util/windows/adsi.rb +2 -2
  198. data/lib/puppet/util/windows/api_types.rb +45 -32
  199. data/lib/puppet/util/windows/eventlog.rb +1 -6
  200. data/lib/puppet/util/windows/principal.rb +8 -6
  201. data/lib/puppet/util/windows/process.rb +15 -14
  202. data/lib/puppet/util/windows/registry.rb +11 -11
  203. data/lib/puppet/util/windows/security.rb +1 -0
  204. data/lib/puppet/util/windows/service.rb +43 -26
  205. data/lib/puppet/util/windows/sid.rb +3 -3
  206. data/lib/puppet/util/windows/user.rb +23 -8
  207. data/lib/puppet/util/yaml.rb +1 -1
  208. data/lib/puppet/version.rb +1 -1
  209. data/locales/puppet.pot +707 -574
  210. data/man/man5/puppet.conf.5 +74 -14
  211. data/man/man8/puppet-agent.8 +7 -7
  212. data/man/man8/puppet-apply.8 +1 -1
  213. data/man/man8/puppet-catalog.8 +1 -1
  214. data/man/man8/puppet-config.8 +1 -1
  215. data/man/man8/puppet-describe.8 +1 -1
  216. data/man/man8/puppet-device.8 +2 -2
  217. data/man/man8/puppet-doc.8 +1 -1
  218. data/man/man8/puppet-epp.8 +1 -1
  219. data/man/man8/puppet-facts.8 +1 -1
  220. data/man/man8/puppet-filebucket.8 +17 -2
  221. data/man/man8/puppet-generate.8 +1 -1
  222. data/man/man8/puppet-help.8 +6 -3
  223. data/man/man8/puppet-key.8 +1 -1
  224. data/man/man8/puppet-lookup.8 +1 -1
  225. data/man/man8/puppet-man.8 +1 -1
  226. data/man/man8/puppet-module.8 +4 -1
  227. data/man/man8/puppet-node.8 +1 -1
  228. data/man/man8/puppet-parser.8 +1 -1
  229. data/man/man8/puppet-plugin.8 +1 -1
  230. data/man/man8/puppet-report.8 +1 -1
  231. data/man/man8/puppet-resource.8 +1 -1
  232. data/man/man8/puppet-script.8 +1 -1
  233. data/man/man8/puppet-ssl.8 +2 -2
  234. data/man/man8/puppet-status.8 +1 -1
  235. data/man/man8/puppet.8 +2 -2
  236. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +67 -0
  237. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -0
  238. data/spec/fixtures/ssl/unknown-ca-key.pem +67 -0
  239. data/spec/fixtures/ssl/unknown-ca.pem +59 -0
  240. data/spec/fixtures/unit/provider/package/dnfmodule/{dnf-module-list-installed.txt → dnf-module-list.txt} +8 -0
  241. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
  242. data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
  243. data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
  244. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
  245. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +1 -102
  246. 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 -106
  247. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +1 -106
  248. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +1 -102
  249. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +1 -98
  250. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +1 -102
  251. 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 -102
  252. data/spec/integration/application/agent_spec.rb +483 -0
  253. data/spec/integration/application/apply_spec.rb +132 -3
  254. data/spec/integration/application/filebucket_spec.rb +190 -0
  255. data/spec/integration/application/plugin_spec.rb +73 -0
  256. data/spec/integration/configurer_spec.rb +26 -7
  257. data/spec/integration/defaults_spec.rb +1 -2
  258. data/spec/integration/http/client_spec.rb +47 -37
  259. data/spec/integration/indirector/facts/facter_spec.rb +4 -0
  260. data/spec/integration/indirector/report/yaml.rb +83 -0
  261. data/spec/integration/module_tool/forge_spec.rb +2 -15
  262. data/spec/integration/network/http_pool_spec.rb +93 -20
  263. data/spec/integration/node/environment_spec.rb +15 -0
  264. data/spec/integration/parser/compiler_spec.rb +11 -0
  265. data/spec/integration/type/file_spec.rb +1 -1
  266. data/spec/integration/util/windows/adsi_spec.rb +6 -1
  267. data/spec/integration/util/windows/registry_spec.rb +7 -7
  268. data/spec/integration/util/windows/user_spec.rb +40 -5
  269. data/spec/lib/puppet/test_ca.rb +2 -2
  270. data/spec/lib/puppet_spec/https.rb +16 -7
  271. data/spec/lib/puppet_spec/puppetserver.rb +119 -0
  272. data/spec/shared_contexts/https.rb +29 -0
  273. data/spec/unit/agent_spec.rb +80 -26
  274. data/spec/unit/application/agent_spec.rb +9 -5
  275. data/spec/unit/application/apply_spec.rb +2 -12
  276. data/spec/unit/application/describe_spec.rb +88 -50
  277. data/spec/unit/application/device_spec.rb +2 -2
  278. data/spec/unit/application/filebucket_spec.rb +22 -2
  279. data/spec/unit/application/resource_spec.rb +2 -2
  280. data/spec/unit/configurer/fact_handler_spec.rb +4 -8
  281. data/spec/unit/configurer/plugin_handler_spec.rb +36 -19
  282. data/spec/unit/configurer_spec.rb +17 -18
  283. data/spec/unit/context/trusted_information_spec.rb +25 -2
  284. data/spec/unit/daemon_spec.rb +5 -64
  285. data/spec/unit/defaults_spec.rb +25 -2
  286. data/spec/unit/environments_spec.rb +65 -28
  287. data/spec/unit/face/facts_spec.rb +24 -20
  288. data/spec/unit/face/module/search_spec.rb +17 -0
  289. data/spec/unit/face/plugin_spec.rb +12 -10
  290. data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
  291. data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
  292. data/spec/unit/file_system/uniquefile_spec.rb +11 -0
  293. data/spec/unit/file_system_spec.rb +26 -2
  294. data/spec/unit/functions/lookup_spec.rb +13 -0
  295. data/spec/unit/http/client_spec.rb +327 -35
  296. data/spec/unit/http/external_client_spec.rb +201 -0
  297. data/spec/unit/http/resolver_spec.rb +34 -2
  298. data/spec/unit/http/response_spec.rb +75 -0
  299. data/spec/unit/http/service/ca_spec.rb +53 -11
  300. data/spec/unit/http/service/compiler_spec.rb +627 -0
  301. data/spec/unit/http/service/file_server_spec.rb +308 -0
  302. data/spec/unit/http/service/report_spec.rb +27 -9
  303. data/spec/unit/http/service_spec.rb +98 -5
  304. data/spec/unit/http/session_spec.rb +190 -7
  305. data/spec/unit/indirector/catalog/compiler_spec.rb +47 -29
  306. data/spec/unit/indirector/catalog/rest_spec.rb +59 -2
  307. data/spec/unit/indirector/facts/rest_spec.rb +79 -24
  308. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +82 -2
  309. data/spec/unit/indirector/file_content/rest_spec.rb +53 -2
  310. data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
  311. data/spec/unit/indirector/file_metadata/rest_spec.rb +110 -2
  312. data/spec/unit/indirector/node/rest_spec.rb +57 -2
  313. data/spec/unit/indirector/report/rest_spec.rb +58 -51
  314. data/spec/unit/indirector/request_spec.rb +1 -1
  315. data/spec/unit/indirector/resource/ral_spec.rb +7 -8
  316. data/spec/unit/indirector/rest_spec.rb +13 -0
  317. data/spec/unit/indirector/status/rest_spec.rb +43 -2
  318. data/spec/unit/interface_spec.rb +3 -3
  319. data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
  320. data/spec/unit/network/http/connection_spec.rb +559 -175
  321. data/spec/unit/network/http/nocache_pool_spec.rb +25 -3
  322. data/spec/unit/network/http/pool_spec.rb +89 -11
  323. data/spec/unit/network/http_pool_spec.rb +63 -57
  324. data/spec/unit/network/http_spec.rb +1 -1
  325. data/spec/unit/node/environment_spec.rb +16 -0
  326. data/spec/unit/node/facts_spec.rb +2 -1
  327. data/spec/unit/node_spec.rb +7 -4
  328. data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
  329. data/spec/unit/parser/environment_compiler_spec.rb +7 -0
  330. data/spec/unit/parser/scope_spec.rb +1 -1
  331. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
  332. data/spec/unit/pops/loaders/loaders_spec.rb +1 -1
  333. data/spec/unit/pops/serialization/to_from_hr_spec.rb +6 -1
  334. data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
  335. data/spec/unit/pops/validator/validator_spec.rb +7 -2
  336. data/spec/unit/provider/aix_object_spec.rb +16 -2
  337. data/spec/unit/provider/group/groupadd_spec.rb +181 -56
  338. data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
  339. data/spec/unit/provider/package/aix_spec.rb +29 -0
  340. data/spec/unit/provider/package/apt_spec.rb +43 -2
  341. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  342. data/spec/unit/provider/package/dnfmodule_spec.rb +76 -15
  343. data/spec/unit/provider/package/dpkg_spec.rb +28 -6
  344. data/spec/unit/provider/package/gem_spec.rb +40 -0
  345. data/spec/unit/provider/package/openbsd_spec.rb +17 -0
  346. data/spec/unit/provider/package/pacman_spec.rb +6 -21
  347. data/spec/unit/provider/package/pip_spec.rb +68 -19
  348. data/spec/unit/provider/package/pkg_spec.rb +15 -1
  349. data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
  350. data/spec/unit/provider/package/pkgng_spec.rb +38 -0
  351. data/spec/unit/provider/package/portage_spec.rb +5 -0
  352. data/spec/unit/provider/package/puppet_gem_spec.rb +8 -0
  353. data/spec/unit/provider/package/rpm_spec.rb +0 -212
  354. data/spec/unit/provider/package/yum_spec.rb +292 -0
  355. data/spec/unit/provider/package/zypper_spec.rb +84 -0
  356. data/spec/unit/provider/service/init_spec.rb +1 -0
  357. data/spec/unit/provider/service/openbsd_spec.rb +9 -0
  358. data/spec/unit/provider/service/openwrt_spec.rb +1 -0
  359. data/spec/unit/provider/service/redhat_spec.rb +9 -0
  360. data/spec/unit/provider/service/systemd_spec.rb +92 -12
  361. data/spec/unit/provider/service/windows_spec.rb +22 -14
  362. data/spec/unit/provider/user/directoryservice_spec.rb +41 -0
  363. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  364. data/spec/unit/provider/user/useradd_spec.rb +43 -24
  365. data/spec/unit/provider/user/windows_adsi_spec.rb +3 -3
  366. data/spec/unit/puppet_pal_2pec.rb +0 -26
  367. data/spec/unit/puppet_pal_catalog_spec.rb +46 -0
  368. data/spec/unit/puppet_spec.rb +47 -0
  369. data/spec/unit/reports/http_spec.rb +70 -52
  370. data/spec/unit/resource_spec.rb +3 -3
  371. data/spec/unit/settings/autosign_setting_spec.rb +1 -1
  372. data/spec/unit/settings/http_extra_headers_spec.rb +64 -0
  373. data/spec/unit/ssl/certificate_spec.rb +7 -0
  374. data/spec/unit/ssl/host_spec.rb +4 -2
  375. data/spec/unit/ssl/oids_spec.rb +1 -0
  376. data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
  377. data/spec/unit/ssl/state_machine_spec.rb +99 -13
  378. data/spec/unit/test/test_helper_spec.rb +17 -0
  379. data/spec/unit/transaction/persistence_spec.rb +1 -10
  380. data/spec/unit/transaction/report_spec.rb +5 -1
  381. data/spec/unit/transaction_spec.rb +0 -2
  382. data/spec/unit/type/file/ensure_spec.rb +1 -2
  383. data/spec/unit/type/file/source_spec.rb +89 -38
  384. data/spec/unit/type/file_spec.rb +122 -96
  385. data/spec/unit/type/package_spec.rb +8 -0
  386. data/spec/unit/type/service_spec.rb +185 -8
  387. data/spec/unit/type/user_spec.rb +1 -2
  388. data/spec/unit/type_spec.rb +50 -0
  389. data/spec/unit/util/at_fork_spec.rb +3 -2
  390. data/spec/unit/util/autoload_spec.rb +2 -1
  391. data/spec/unit/util/checksums_spec.rb +16 -0
  392. data/spec/unit/util/log/destinations_spec.rb +1 -29
  393. data/spec/unit/util/package/version/debian_spec.rb +83 -0
  394. data/spec/unit/util/package/version/pip_spec.rb +464 -0
  395. data/spec/unit/util/package/version/range_spec.rb +175 -0
  396. data/spec/unit/util/package/version/rpm_spec.rb +121 -0
  397. data/spec/unit/util/pidlock_spec.rb +112 -42
  398. data/spec/unit/util/plist_spec.rb +20 -0
  399. data/spec/unit/util/rpm_compare_spec.rb +196 -0
  400. data/spec/unit/util/storage_spec.rb +1 -8
  401. data/spec/unit/util/windows/adsi_spec.rb +4 -4
  402. data/spec/unit/util/windows/api_types_spec.rb +104 -40
  403. data/spec/unit/util/windows/service_spec.rb +4 -4
  404. data/spec/unit/util/windows/sid_spec.rb +2 -2
  405. data/spec/unit/util_spec.rb +3 -3
  406. data/spec/unit/x509/cert_provider_spec.rb +1 -1
  407. data/tasks/generate_cert_fixtures.rake +15 -1
  408. data/tasks/manpages.rake +5 -35
  409. metadata +73 -12
  410. data/COMMITTERS.md +0 -244
  411. data/spec/integration/faces/plugin_spec.rb +0 -61
  412. data/spec/integration/test/test_helper_spec.rb +0 -31
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7ccf86f9b271446083ab3e11e7fa8ee541f40c007ef6cda5bb987eb351f8eb18
4
- data.tar.gz: ee2e4ee38f07a94a2752e37991ed4fe4539b32a4e2795427c009ea060733aefc
3
+ metadata.gz: 0dd9c2e67a5940c4e601294431a60678f16d762bade33bce748a08d404ce5a43
4
+ data.tar.gz: 88bbf203adca47187aadaebb12a1cffbea15c38493679635094b63811e2f795e
5
5
  SHA512:
6
- metadata.gz: cab1f1c88965323e2d70e6610445bcb1b0efdaa8440bf8f5867d94f7f3a235bfb89606eea07ad61b62885bb33653aae6463e487de8e61a0987d7128678d74190
7
- data.tar.gz: aca8163a9de322046ac5e1e4c819e814f193c492dbc3572e477acd0e46936ee213997f806f2bc7520cb1763cb336fb27ec9f27206a361e704c5dc87f0313edf5
6
+ metadata.gz: eb8be186ca7b9a80de414c0fafe67a5fb1f24b25840032144cd5a0cc9ad994355e741d4ae21812cc546b794e618088bb12608a5b02569946290246e3343ca611
7
+ data.tar.gz: 4586a831225228876ca995623ff2dd37de0239756b4ae3c40b089ff73ad4fb0a14564f020ca00fdf3ecad1e05b84593dad2262266a5b2ceafa87848aa972e495
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,11 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- puppet (6.12.0)
4
+ puppet (6.17.0)
5
5
  CFPropertyList (~> 2.2)
6
6
  concurrent-ruby (~> 1.0)
7
7
  deep_merge (~> 1.0)
8
- facter (>= 2.4.0, < 4)
8
+ facter (>= 2.4.0, < 5)
9
9
  fast_gettext (~> 1.1)
10
10
  hiera (>= 3.2.1, < 4)
11
11
  httpclient (~> 2.8)
@@ -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.5)
23
+ ast (2.4.1)
24
+ coderay (1.1.3)
25
+ concurrent-ruby (1.1.6)
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.6)
32
+ facter (4.0.29)
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,41 +40,41 @@ 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
- hiera-eyaml (3.1.1)
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
- locale (2.1.2)
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
- msgpack (1.3.1)
57
- multi_json (1.14.1)
58
+ msgpack (1.3.3)
59
+ multi_json (1.15.0)
58
60
  mustache (1.1.1)
59
- optimist (3.0.0)
60
- packaging (0.99.52)
61
+ optimist (3.0.1)
62
+ packaging (0.99.66)
61
63
  artifactory (~> 2)
62
64
  rake (>= 12.3)
63
65
  release-metrics
64
- parallel (1.19.1)
65
- parser (2.7.0.2)
66
- ast (~> 2.4.0)
66
+ parallel (1.19.2)
67
+ parser (2.7.1.4)
68
+ ast (~> 2.4.1)
67
69
  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)
70
+ pry (0.13.1)
71
+ coderay (~> 1.1)
72
+ method_source (~> 1.0)
73
+ public_suffix (4.0.5)
74
+ puppet-resource_api (1.8.13)
73
75
  hocon (>= 1.0)
74
- puppetserver-ca (1.5.0)
75
- facter (>= 2.0.1, < 4)
76
+ puppetserver-ca (1.8.0)
77
+ facter (>= 2.0.1, < 5)
76
78
  racc (1.4.9)
77
79
  rainbow (2.2.2)
78
80
  rake
@@ -90,9 +92,9 @@ GEM
90
92
  rspec-core (~> 3.9.0)
91
93
  rspec-expectations (~> 3.9.0)
92
94
  rspec-mocks (~> 3.9.0)
93
- rspec-core (3.9.1)
94
- rspec-support (~> 3.9.1)
95
- rspec-expectations (3.9.0)
95
+ rspec-core (3.9.2)
96
+ rspec-support (~> 3.9.3)
97
+ rspec-expectations (3.9.2)
96
98
  diff-lcs (>= 1.2.0, < 2.0)
97
99
  rspec-support (~> 3.9.0)
98
100
  rspec-its (1.3.0)
@@ -101,7 +103,7 @@ GEM
101
103
  rspec-mocks (3.9.1)
102
104
  diff-lcs (>= 1.2.0, < 2.0)
103
105
  rspec-support (~> 3.9.0)
104
- rspec-support (3.9.2)
106
+ rspec-support (3.9.3)
105
107
  rubocop (0.49.1)
106
108
  parallel (~> 1.10)
107
109
  parser (>= 2.3.3.1, < 3.0)
@@ -111,18 +113,19 @@ GEM
111
113
  unicode-display_width (~> 1.0, >= 1.0.1)
112
114
  rubocop-i18n (1.2.0)
113
115
  rubocop (~> 0.49.0)
114
- ruby-prof (1.1.0)
116
+ ruby-prof (1.4.1)
115
117
  ruby-progressbar (1.10.1)
116
118
  safe_yaml (1.0.5)
117
119
  semantic_puppet (1.0.2)
118
120
  text (1.3.1)
119
- unicode-display_width (1.6.0)
120
- vcr (5.0.0)
121
- webmock (3.7.6)
121
+ thor (1.0.1)
122
+ unicode-display_width (1.7.0)
123
+ vcr (5.1.0)
124
+ webmock (3.8.3)
122
125
  addressable (>= 2.3.6)
123
126
  crack (>= 0.3.2)
124
127
  hashdiff (>= 0.4.0, < 2.0.0)
125
- yard (0.9.24)
128
+ yard (0.9.25)
126
129
 
127
130
  PLATFORMS
128
131
  ruby
data/README.md CHANGED
@@ -1,7 +1,6 @@
1
- Puppet
2
- ======
1
+ # Puppet
3
2
 
4
- [![Travis Status](https://travis-ci.org/puppetlabs/puppet.svg?branch=master)](https://travis-ci.org/puppetlabs/puppet)
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)
6
5
  [![Gem Version](https://badge.fury.io/rb/puppet.svg)](https://badge.fury.io/rb/puppet)
7
6
  [![Inline docs](https://inch-ci.org/github/puppetlabs/puppet.svg)](https://inch-ci.org/github/puppetlabs/puppet)
@@ -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/)
@@ -17,7 +17,7 @@ gem_forge_project: 'puppet'
17
17
  gem_required_ruby_version: '>= 2.3.0'
18
18
  gem_required_rubygems_version: '> 1.3.1'
19
19
  gem_runtime_dependencies:
20
- facter: ['> 2.0.1', '< 4']
20
+ facter: ['> 2.0.1', '< 5']
21
21
  hiera: ['>= 3.2.1', '< 4']
22
22
  semantic_puppet: '~> 1.0'
23
23
  fast_gettext: '~> 1.1'
@@ -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
  #
@@ -22,6 +25,7 @@ require 'puppet/external/pson/common'
22
25
  require 'puppet/external/pson/version'
23
26
  require 'puppet/external/pson/pure'
24
27
  require 'puppet/gettext/config'
28
+ require 'puppet/defaults'
25
29
 
26
30
 
27
31
  #------------------------------------------------------------
@@ -60,6 +64,14 @@ module Puppet
60
64
  @@settings
61
65
  end
62
66
 
67
+ # The puppetserver project has its own settings class that is thread-aware; this
68
+ # method is here to allow the puppetserver to define its own custom settings class
69
+ # for multithreaded puppet. It is not intended for use outside of the puppetserver
70
+ # implmentation.
71
+ def self.replace_settings_object(new_settings)
72
+ @@settings = new_settings
73
+ end
74
+
63
75
  # Get the value for a setting
64
76
  #
65
77
  # @param [Symbol] param the setting to retrieve
@@ -87,6 +99,7 @@ module Puppet
87
99
 
88
100
  # Store a new default value.
89
101
  def self.define_settings(section, hash)
102
+ Puppet.deprecation_warning('The method Puppet.define_settings is deprecated and will be removed in a future release')
90
103
  @@settings.define_settings(section, hash)
91
104
  end
92
105
 
@@ -121,8 +134,9 @@ module Puppet
121
134
  Puppet::Util::RunMode[@@settings.preferred_run_mode]
122
135
  end
123
136
 
124
- # Load all of the settings.
125
- require 'puppet/defaults'
137
+ # Modify the settings with defaults defined in `initialize_default_settings` method in puppet/defaults.rb. This can
138
+ # be used in the initialization of new Puppet::Settings objects in the puppetserver project.
139
+ Puppet.initialize_default_settings!(settings)
126
140
 
127
141
  # Now that settings are loaded we have the code loaded to be able to issue
128
142
  # deprecation warnings. Warn if we're on a deprecated ruby version.
@@ -137,19 +151,47 @@ module Puppet
137
151
  #
138
152
  # @api public
139
153
  # @param args [Array<String>] the command line arguments to use for initialization
154
+ # @param require_config [Boolean] controls loading of Puppet configuration files
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
140
157
  # @return [void]
141
- def self.initialize_settings(args = [], require_config = true)
142
- do_initialize_settings_for_run_mode(:user, args, require_config)
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
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)
143
178
  end
179
+ private_class_method :initialize_load_path
144
180
 
145
181
  # private helper method to provide the implementation details of initializing for a run mode,
146
182
  # but allowing us to control where the deprecation warning is issued
147
- def self.do_initialize_settings_for_run_mode(run_mode, args, require_config = true)
183
+ def self.do_initialize_settings_for_run_mode(run_mode, args, require_config, push_settings_globally, runtime_implementations)
148
184
  Puppet.settings.initialize_global_settings(args, require_config)
149
185
  run_mode = Puppet::Util::RunMode[run_mode]
150
186
  Puppet.settings.initialize_app_defaults(Puppet::Settings.app_defaults_for_run_mode(run_mode))
151
- push_context_global(Puppet.base_context(Puppet.settings), "Initial context after settings initialization")
152
- Puppet::Parser::Functions.reset
187
+ if push_settings_globally
188
+ initialize_load_path
189
+ push_context_global(Puppet.base_context(Puppet.settings), "Initial context after settings initialization")
190
+ Puppet::Parser::Functions.reset
191
+ end
192
+ runtime_implementations.each_pair do |name, impl|
193
+ Puppet.runtime[name] = impl
194
+ end
153
195
  end
154
196
  private_class_method :do_initialize_settings_for_run_mode
155
197
 
@@ -203,10 +245,7 @@ module Puppet
203
245
 
204
246
  {
205
247
  :environments => Puppet::Environments::Cached.new(Puppet::Environments::Combined.new(*loaders)),
206
- :http_pool => proc {
207
- require 'puppet/network/http'
208
- Puppet::Network::HTTP::NoCachePool.new
209
- },
248
+ :http_pool => proc { Puppet.runtime[:http].pool },
210
249
  :ssl_context => proc {
211
250
  begin
212
251
  cert = Puppet::X509::CertProvider.new
@@ -221,7 +260,8 @@ module Puppet
221
260
  raise e
222
261
  end
223
262
  },
224
- :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 },
225
265
  :plugins => proc { Puppet::Plugins::Configuration.load_plugins },
226
266
  :rich_data => false
227
267
  }
@@ -307,7 +347,6 @@ module Puppet
307
347
 
308
348
  require 'puppet/runtime'
309
349
  @runtime = Puppet::Runtime.instance
310
- @runtime['http'] = proc { Puppet::HTTP::Client.new }
311
350
  end
312
351
 
313
352
  # This feels weird to me; I would really like for us to get to a state where there is never a "require" statement