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
@@ -11,32 +11,53 @@ class Puppet::Configurer::Downloader
11
11
  files = []
12
12
  begin
13
13
  catalog.apply do |trans|
14
+ unless Puppet[:ignore_plugin_errors]
15
+ # Propagate the first failure associated with the transaction. The any_failed?
16
+ # method returns the first resource status that failed or nil, not a boolean.
17
+ first_failure = trans.any_failed?
18
+ if first_failure
19
+ event = (first_failure.events || []).first
20
+ detail = event ? event.message : 'unknown'
21
+ raise Puppet::Error.new(_("Failed to retrieve %{name}: %{detail}") % { name: name, detail: detail })
22
+ end
23
+ end
24
+
14
25
  trans.changed?.each do |resource|
15
26
  yield resource if block_given?
16
27
  files << resource[:path]
17
28
  end
18
29
  end
19
30
  rescue Puppet::Error => detail
20
- Puppet.log_exception(detail, _("Could not retrieve %{name}: %{detail}") % { name: name, detail: detail })
31
+ if Puppet[:ignore_plugin_errors]
32
+ Puppet.log_exception(detail, _("Could not retrieve %{name}: %{detail}") % { name: name, detail: detail })
33
+ else
34
+ raise detail
35
+ end
21
36
  end
22
37
  files
23
38
  end
24
39
 
25
40
  def initialize(name, path, source, ignore = nil, environment = nil, source_permissions = :ignore)
26
41
  @name, @path, @source, @ignore, @environment, @source_permissions = name, path, source, ignore, environment, source_permissions
27
- end
28
42
 
29
- def catalog
30
- catalog = Puppet::Resource::Catalog.new("PluginSync", @environment)
31
- catalog.host_config = false
32
- catalog.add_resource(file)
33
- catalog
34
43
  end
35
44
 
36
45
  def file
37
- args = default_arguments.merge(:path => path, :source => source)
38
- args[:ignore] = ignore.split if ignore
39
- Puppet::Type.type(:file).new(args)
46
+ unless @file
47
+ args = default_arguments.merge(:path => path, :source => source)
48
+ args[:ignore] = ignore.split if ignore
49
+ @file = Puppet::Type.type(:file).new(args)
50
+ end
51
+ @file
52
+ end
53
+
54
+ def catalog
55
+ unless @catalog
56
+ @catalog = Puppet::Resource::Catalog.new("PluginSync", @environment)
57
+ @catalog.host_config = false
58
+ @catalog.add_resource(file)
59
+ end
60
+ @catalog
40
61
  end
41
62
 
42
63
  private
@@ -29,8 +29,17 @@ class Puppet::Configurer::PluginHandler
29
29
  result += plugin_fact_downloader.evaluate
30
30
  result += plugin_downloader.evaluate
31
31
 
32
+ # until file metadata/content are using the rest client, we need to check
33
+ # both :server_agent_version and the session to see if the server supports
34
+ # the "locales" mount
32
35
  server_agent_version = Puppet.lookup(:server_agent_version) { "0.0" }
33
- if Gem::Version.new(server_agent_version) >= SUPPORTED_LOCALES_MOUNT_AGENT_VERSION
36
+ locales = Gem::Version.new(server_agent_version) >= SUPPORTED_LOCALES_MOUNT_AGENT_VERSION
37
+ unless locales
38
+ session = Puppet.lookup(:http_session)
39
+ locales = session.supports?(:fileserver, 'locales') || session.supports?(:puppet, 'locales')
40
+ end
41
+
42
+ if locales
34
43
  locales_downloader = Puppet::Configurer::Downloader.new(
35
44
  "locales",
36
45
  Puppet[:localedest],
@@ -26,7 +26,7 @@ class Puppet::Confine
26
26
  require "puppet/confine/#{name}"
27
27
  rescue LoadError => detail
28
28
  unless detail.to_s =~ /No such file|cannot load such file/i
29
- warn "Could not load confine test '#{name}': #{detail}"
29
+ Puppet.warning("Could not load confine test '#{name}': #{detail}")
30
30
  end
31
31
  # Could not find file
32
32
  if !Puppet[:always_retry_plugins]
@@ -67,7 +67,7 @@ class Puppet::Confine
67
67
  def valid?
68
68
  values.each do |value|
69
69
  unless pass?(value)
70
- Puppet.debug(label + ": " + message(value))
70
+ Puppet.debug { label + ": " + message(value) }
71
71
  return false
72
72
  end
73
73
  end
@@ -19,7 +19,7 @@ class Puppet::Confine::Any < Puppet::Confine
19
19
  if @values.any? { |value| pass?(value) }
20
20
  true
21
21
  else
22
- Puppet.debug("#{label}: #{message(@values)}")
22
+ Puppet.debug { "#{label}: #{message(@values)}" }
23
23
  false
24
24
  end
25
25
  end
@@ -29,11 +29,6 @@ class Puppet::Context::TrustedInformation
29
29
  # @return [String]
30
30
  attr_reader :hostname
31
31
 
32
- # Additional external facts loaded through `trusted_external_command`.
33
- #
34
- # @return [Hash]
35
- attr_reader :external
36
-
37
32
  def initialize(authenticated, certname, extensions, external = {})
38
33
  @authenticated = authenticated.freeze
39
34
  @certname = certname.freeze
@@ -46,11 +41,11 @@ class Puppet::Context::TrustedInformation
46
41
  end
47
42
  @hostname = hostname.freeze
48
43
  @domain = domain.freeze
49
- @external = external.freeze
44
+ @external = external.is_a?(Proc) ? external : external.freeze
50
45
  end
51
46
 
52
47
  def self.remote(authenticated, node_name, certificate)
53
- external = retrieve_trusted_external(node_name)
48
+ external = proc { retrieve_trusted_external(node_name) }
54
49
 
55
50
  if authenticated
56
51
  extensions = {}
@@ -70,8 +65,19 @@ class Puppet::Context::TrustedInformation
70
65
  def self.local(node)
71
66
  # Always trust local data by picking up the available parameters.
72
67
  client_cert = node ? node.parameters['clientcert'] : nil
68
+ external = proc { retrieve_trusted_external(client_cert) }
69
+
70
+ new('local', client_cert, {}, external)
71
+ end
73
72
 
74
- new('local', client_cert, {}, retrieve_trusted_external(client_cert))
73
+ # Additional external facts loaded through `trusted_external_command`.
74
+ #
75
+ # @return [Hash]
76
+ def external
77
+ if @external.is_a?(Proc)
78
+ @external = @external.call.freeze
79
+ end
80
+ @external
75
81
  end
76
82
 
77
83
  def self.retrieve_trusted_external(certname)
@@ -1,19 +1,15 @@
1
1
  require 'puppet/application'
2
2
  require 'puppet/scheduler'
3
3
 
4
- # Run periodic actions and a network server in a daemonized process.
4
+ # Run periodic actions in a daemonized process.
5
5
  #
6
- # A Daemon has 3 parts:
6
+ # A Daemon has 2 parts:
7
7
  # * config reparse
8
- # * (optional) an agent that responds to #run
9
- # * (optional) a server that response to #stop, #start, and #wait_for_shutdown
8
+ # * an agent that responds to #run
10
9
  #
11
- # The config reparse will occur periodically based on Settings. The server will
12
- # be started and is expected to manage its own run loop (and so not block the
13
- # start call). The server will, however, still be waited for by using the
14
- # #wait_for_shutdown method. The agent is run periodically and a time interval
15
- # based on Settings. The config reparse will update this time interval when
16
- # needed.
10
+ # The config reparse will occur periodically based on Settings. The agent
11
+ # is run periodically and a time interval based on Settings. The config
12
+ # reparse will update this time interval when needed.
17
13
  #
18
14
  # The Daemon is also responsible for signal handling, starting, stopping,
19
15
  # running the agent on demand, and reloading the entire process. It ensures
@@ -23,12 +19,14 @@ require 'puppet/scheduler'
23
19
  class Puppet::Daemon
24
20
  SIGNAL_CHECK_INTERVAL = 5
25
21
 
26
- attr_accessor :agent, :server, :argv
27
- attr_reader :signals
22
+ attr_accessor :argv
23
+ attr_reader :signals, :agent
28
24
 
29
- def initialize(pidfile, scheduler = Puppet::Scheduler::Scheduler.new())
25
+ def initialize(agent, pidfile, scheduler = Puppet::Scheduler::Scheduler.new())
26
+ raise Puppet::DevError, _("Daemons must have an agent") unless agent
30
27
  @scheduler = scheduler
31
28
  @pidfile = pidfile
29
+ @agent = agent
32
30
  @signals = []
33
31
  end
34
32
 
@@ -88,7 +86,6 @@ class Puppet::Daemon
88
86
  end
89
87
 
90
88
  def reload
91
- return unless agent
92
89
  agent.run({:splay => false})
93
90
  rescue Puppet::LockError
94
91
  Puppet.notice "Not triggering already-running agent"
@@ -96,7 +93,7 @@ class Puppet::Daemon
96
93
 
97
94
  def restart
98
95
  Puppet::Application.restart!
99
- reexec unless agent and agent.running?
96
+ reexec
100
97
  end
101
98
 
102
99
  def reopen_logs
@@ -129,8 +126,6 @@ class Puppet::Daemon
129
126
  def stop(args = {:exit => true})
130
127
  Puppet::Application.stop!
131
128
 
132
- server.stop if server
133
-
134
129
  remove_pidfile
135
130
 
136
131
  Puppet::Util::Log.close_all
@@ -140,16 +135,7 @@ class Puppet::Daemon
140
135
 
141
136
  def start
142
137
  create_pidfile
143
-
144
- raise Puppet::DevError, _("Daemons must have an agent, server, or both") unless agent or server
145
-
146
- # Start the listening server, if required.
147
- server.start if server
148
-
149
- # Finally, loop forever running events - or, at least, until we exit.
150
138
  run_event_loop
151
-
152
- server.wait_for_shutdown if server
153
139
  end
154
140
 
155
141
  private
@@ -165,6 +151,7 @@ class Puppet::Daemon
165
151
  @pidfile.unlock
166
152
  end
167
153
 
154
+ # Loop forever running events - or, at least, until we exit.
168
155
  def run_event_loop
169
156
  agent_run = Puppet::Scheduler.create_job(Puppet[:runinterval], Puppet[:splay], Puppet[:splaylimit]) do
170
157
  # Splay for the daemon is handled in the scheduler
@@ -189,7 +176,6 @@ class Puppet::Daemon
189
176
  end
190
177
 
191
178
  reparse_run.disable if Puppet[:filetimeout] == 0
192
- agent_run.disable unless agent
193
179
 
194
180
  @scheduler.run_loop([reparse_run, agent_run, signal_loop])
195
181
  end
@@ -81,7 +81,10 @@ module Puppet
81
81
  begin
82
82
  original_facter = Object.const_get(:Facter)
83
83
  Object.send(:remove_const, :Facter)
84
+
84
85
  require 'facter-ng'
86
+ # It is required to re-setup logger for facter-ng
87
+ Puppet::Util::Logging.setup_facter_logging!
85
88
  rescue LoadError
86
89
  Object.const_set(:Facter, original_facter)
87
90
  raise ArgumentError, 'facter-ng could not be loaded'
@@ -344,8 +347,7 @@ module Puppet
344
347
  :default => "ansi",
345
348
  :type => :string,
346
349
  :desc => "Whether to use colors when logging to the console. Valid values are
347
- `ansi` (equivalent to `true`), `html`, and `false`, which produces no color.
348
- Defaults to false on Windows, as its console does not support ansi colors.",
350
+ `ansi` (equivalent to `true`), `html`, and `false`, which produces no color."
349
351
  },
350
352
  :mkusers => {
351
353
  :default => false,
@@ -587,13 +589,22 @@ module Puppet
587
589
  },
588
590
  :trusted_external_command => {
589
591
  :default => nil,
590
- :desc => "The external trusted facts script to use.
592
+ :type => :file_or_directory,
593
+ :desc => "The external trusted facts script or directory to use.
591
594
  This setting's value can be set to the path to an executable command that
592
- can produce external trusted facts. The command must:
595
+ can produce external trusted facts or to a directory containing those
596
+ executable commands. The command(s) must:
593
597
 
594
598
  * Take the name of a node as a command-line argument.
595
599
  * Return a JSON hash with the external trusted facts for this node.
596
- * For unknown or invalid nodes, exit with a non-zero exit code.",
600
+ * For unknown or invalid nodes, exit with a non-zero exit code.
601
+
602
+ If the setting points to an executable command, then the external trusted
603
+ facts will be stored in the 'external' key of the trusted facts hash. Otherwise
604
+ for each executable file in the directory, the external trusted facts will be
605
+ stored in the `<basename>` key of the `trusted['external']` hash. For example,
606
+ if the files foo.rb and bar.sh are in the directory, then `trusted['external']`
607
+ will be the hash `{ 'foo' => <foo.rb output>, 'bar' => <bar.sh output> }`.",
597
608
  },
598
609
  :default_file_terminus => {
599
610
  :type => :terminus,
@@ -811,7 +822,9 @@ API to expire the cache as needed
811
822
  only use lowercase letters, numbers, periods, underscores, and dashes. (That is,
812
823
  it should match `/\A[a-z0-9._-]+\Z/`.)
813
824
  * The special value `ca` is reserved, and can't be used as the certname
814
- for a normal node.
825
+ for a normal node.
826
+
827
+ **Note:** You must set the certname in the main section of the puppet.conf file. Setting it in a different section causes errors.
815
828
 
816
829
  Defaults to the node's fully qualified domain name.",
817
830
  :hook => proc { |value| raise(ArgumentError, _("Certificate names must be lower case")) unless value == value.downcase }},
@@ -989,6 +1002,15 @@ EOT
989
1002
  and reject the CA certificate if the values do not match. This only applies
990
1003
  during the first download of the CA certificate."
991
1004
  },
1005
+ :ssl_trust_store => {
1006
+ :default => nil,
1007
+ :type => :file,
1008
+ :desc => "A file containing CA certificates in PEM format that puppet should trust
1009
+ when making HTTPS requests. This **only** applies to https requests to non-puppet
1010
+ infrastructure, such as retrieving file metadata and content from https file sources,
1011
+ puppet module tool and the 'http' report processor. This setting is ignored when
1012
+ making requests to puppet:// URLs such as catalog and report requests.",
1013
+ },
992
1014
  :ssl_client_ca_auth => {
993
1015
  :type => :file,
994
1016
  :mode => "0644",
@@ -1167,7 +1189,7 @@ EOT
1167
1189
  the request.
1168
1190
 
1169
1191
  For info on autosign configuration files, see
1170
- [the guide to Puppet's config files](https://puppet.com/docs/puppet/latest/config_about_settings.html).",
1192
+ [the guide to Puppet's config files](https://puppet.com/docs/puppet/latest/config_file_autosign.html).",
1171
1193
  },
1172
1194
  :allow_duplicate_certs => {
1173
1195
  :default => false,
@@ -1533,7 +1555,7 @@ EOT
1533
1555
  :statefile => {
1534
1556
  :default => "$statedir/state.yaml",
1535
1557
  :type => :file,
1536
- :mode => "0660",
1558
+ :mode => "0640",
1537
1559
  :desc => "Where puppet agent and puppet master store state associated
1538
1560
  with the running configuration. In the case of puppet master,
1539
1561
  this file reflects the state discovered through interacting
@@ -1555,7 +1577,7 @@ EOT
1555
1577
  :transactionstorefile => {
1556
1578
  :default => "$statedir/transactionstore.yaml",
1557
1579
  :type => :file,
1558
- :mode => "0660",
1580
+ :mode => "0640",
1559
1581
  :desc => "Transactional storage file for persisting data between
1560
1582
  transactions for the purposes of infering information (such as
1561
1583
  corrective_change) on new data received."
@@ -1633,6 +1655,12 @@ EOT
1633
1655
  :default => lambda { Puppet::Settings.domain_fact },
1634
1656
  :desc => "The domain which will be queried to find the SRV records of servers to use.",
1635
1657
  },
1658
+ :http_extra_headers => {
1659
+ :default => [],
1660
+ :type => :http_extra_headers,
1661
+ :desc => "The list of extra headers that will be sent with http requests to the master.
1662
+ The header definition consists of a name and a value separated by a colon."
1663
+ },
1636
1664
  :ignoreschedules => {
1637
1665
  :default => false,
1638
1666
  :type => :boolean,
@@ -1675,8 +1703,7 @@ EOT
1675
1703
  :type => :duration,
1676
1704
  :desc => "How often puppet agent applies the catalog.
1677
1705
  Note that a runinterval of 0 means \"run continuously\" rather than
1678
- \"never run.\" If you want puppet agent to never run, you should start
1679
- it with the `--no-client` option. #{AS_DURATION}",
1706
+ \"never run.\" #{AS_DURATION}",
1680
1707
  },
1681
1708
  :runtimeout => {
1682
1709
  :default => "1h",
@@ -1789,10 +1816,27 @@ EOT
1789
1816
  :type => :boolean,
1790
1817
  :desc => "Whether to send reports after every transaction.",
1791
1818
  },
1819
+ :report_include_system_store => {
1820
+ :default => false,
1821
+ :type => :boolean,
1822
+ :desc => "Whether the 'http' report processor should include the system
1823
+ certificate store when submitting reports to HTTPS URLs. If false, then
1824
+ the 'http' processor will only trust HTTPS report servers whose certificates
1825
+ are issued by the puppet CA or one of its intermediate CAs. If true, the
1826
+ processor will additionally trust CA certificates in the system's
1827
+ certificate store."
1828
+ },
1792
1829
  :resubmit_facts => {
1793
1830
  :default => false,
1794
1831
  :type => :boolean,
1795
- :desc => "Whether to send updated facts after every transaction.",
1832
+ :desc => "Whether to send updated facts after every transaction. By default
1833
+ puppet only submits facts at the beginning of the transaction before applying a
1834
+ catalog. Since puppet can modify the state of the system, the value of the facts
1835
+ may change after puppet finishes. Therefore, any facts stored in puppetdb may not
1836
+ be consistent until the agent next runs, typically in 30 minutes. If this feature
1837
+ is enabled, puppet will resubmit facts after applying its catalog, ensuring facts
1838
+ for the node stored in puppetdb are current. However, this will double the fact
1839
+ submission load on puppetdb, so it is disabled by default.",
1796
1840
  },
1797
1841
  :lastrunfile => {
1798
1842
  :default => "$statedir/last_run_summary.yaml",
@@ -1856,6 +1900,25 @@ EOT
1856
1900
  certificate request to be signed. A value of `unlimited` will cause puppet agent
1857
1901
  to ask for a signed certificate indefinitely.
1858
1902
  #{AS_DURATION}",
1903
+ },
1904
+ :waitforlock => {
1905
+ :default => "0",
1906
+ :type => :duration,
1907
+ :desc => "How frequently puppet agent should try running when there is an
1908
+ already ongoing puppet agent instance.
1909
+
1910
+ This argument is by default disabled (value set to 0). In this case puppet agent will
1911
+ immediately exit if it cannot run at that moment. When a value other than 0 is set, this
1912
+ can also be used in combination with the `maxwaitforlock` argument.
1913
+ #{AS_DURATION}",
1914
+ },
1915
+ :maxwaitforlock => {
1916
+ :default => "1m",
1917
+ :type => :ttl,
1918
+ :desc => "The maximum amount of time the puppet agent should wait for an
1919
+ already running puppet agent to finish before starting a new one. This is set by default to 1 minute.
1920
+ A value of `unlimited` will cause puppet agent to wait indefinitely.
1921
+ #{AS_DURATION}",
1859
1922
  }
1860
1923
  )
1861
1924
 
@@ -1896,9 +1959,26 @@ EOT
1896
1959
  is used for retrieval, so anything that is a valid file source can
1897
1960
  be used here.",
1898
1961
  },
1962
+ :pluginsync => {
1963
+ :default => true,
1964
+ :type => :boolean,
1965
+ :desc => "Whether plugins should be synced with the central server. This setting is
1966
+ deprecated.",
1967
+ :hook => proc { |value|
1968
+ #TRANSLATORS 'pluginsync' is a setting and should not be translated
1969
+ Puppet.deprecation_warning(_("Setting 'pluginsync' is deprecated."))
1970
+ }
1971
+ },
1899
1972
  :pluginsignore => {
1900
1973
  :default => ".svn CVS .git .hg",
1901
1974
  :desc => "What files to ignore when pulling down plugins.",
1975
+ },
1976
+ :ignore_plugin_errors => {
1977
+ :default => true,
1978
+ :type => :boolean,
1979
+ :desc => "Whether the puppet run should ignore errors during pluginsync. If the setting
1980
+ is false and there are errors during pluginsync, then the agent will abort the run and
1981
+ submit a report containing information about the failed run."
1902
1982
  }
1903
1983
  )
1904
1984