puppet 5.5.16-x86-mingw32 → 5.5.21-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (359) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +10 -10
  3. data/Gemfile +2 -3
  4. data/Gemfile.lock +57 -52
  5. data/ext/build_defaults.yaml +1 -0
  6. data/ext/cert_inspector +3 -3
  7. data/ext/project_data.yaml +2 -2
  8. data/ext/puppet-test +2 -2
  9. data/ext/regexp_nodes/regexp_nodes.rb +4 -4
  10. data/ext/windows/service/daemon.rb +54 -8
  11. data/install.rb +6 -24
  12. data/lib/puppet.rb +5 -2
  13. data/lib/puppet/agent.rb +5 -13
  14. data/lib/puppet/application.rb +1 -1
  15. data/lib/puppet/application/agent.rb +15 -1
  16. data/lib/puppet/application/apply.rb +2 -2
  17. data/lib/puppet/application/describe.rb +3 -9
  18. data/lib/puppet/application/device.rb +4 -4
  19. data/lib/puppet/application/doc.rb +1 -1
  20. data/lib/puppet/application/filebucket.rb +13 -0
  21. data/lib/puppet/application/lookup.rb +1 -1
  22. data/lib/puppet/application/resource.rb +4 -4
  23. data/lib/puppet/application/script.rb +2 -2
  24. data/lib/puppet/configurer.rb +86 -28
  25. data/lib/puppet/configurer/downloader.rb +2 -6
  26. data/lib/puppet/daemon.rb +1 -1
  27. data/lib/puppet/defaults.rb +82 -38
  28. data/lib/puppet/error.rb +9 -1
  29. data/lib/puppet/external/nagios/base.rb +1 -1
  30. data/lib/puppet/face/ca.rb +1 -1
  31. data/lib/puppet/face/config.rb +10 -48
  32. data/lib/puppet/face/facts.rb +1 -1
  33. data/lib/puppet/face/module/list.rb +5 -5
  34. data/lib/puppet/face/module/search.rb +1 -1
  35. data/lib/puppet/face/module/uninstall.rb +1 -1
  36. data/lib/puppet/face/module/upgrade.rb +1 -1
  37. data/lib/puppet/face/plugin.rb +9 -2
  38. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  39. data/lib/puppet/file_system.rb +0 -8
  40. data/lib/puppet/file_system/memory_file.rb +1 -1
  41. data/lib/puppet/file_system/posix.rb +3 -2
  42. data/lib/puppet/file_system/uniquefile.rb +4 -0
  43. data/lib/puppet/forge.rb +3 -3
  44. data/lib/puppet/functions/epp.rb +4 -4
  45. data/lib/puppet/functions/inline_epp.rb +5 -5
  46. data/lib/puppet/functions/reduce.rb +2 -4
  47. data/lib/puppet/gettext/module_translations.rb +1 -1
  48. data/lib/puppet/graph/rb_tree_map.rb +2 -2
  49. data/lib/puppet/graph/simple_graph.rb +6 -5
  50. data/lib/puppet/indirector/catalog/compiler.rb +8 -0
  51. data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
  52. data/lib/puppet/indirector/hiera.rb +2 -0
  53. data/lib/puppet/indirector/resource/ral.rb +1 -3
  54. data/lib/puppet/indirector/resource/validator.rb +1 -1
  55. data/lib/puppet/interface.rb +2 -1
  56. data/lib/puppet/loaders.rb +0 -1
  57. data/lib/puppet/metatype/manager.rb +1 -1
  58. data/lib/puppet/module.rb +1 -1
  59. data/lib/puppet/module_tool/applications/builder.rb +1 -1
  60. data/lib/puppet/module_tool/applications/installer.rb +1 -1
  61. data/lib/puppet/module_tool/applications/uninstaller.rb +3 -3
  62. data/lib/puppet/module_tool/metadata.rb +1 -1
  63. data/lib/puppet/module_tool/shared_behaviors.rb +4 -4
  64. data/lib/puppet/module_tool/tar/mini.rb +12 -2
  65. data/lib/puppet/network/http/api/indirected_routes.rb +13 -12
  66. data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
  67. data/lib/puppet/network/http/connection.rb +14 -12
  68. data/lib/puppet/network/http/factory.rb +1 -11
  69. data/lib/puppet/network/http/pool.rb +7 -1
  70. data/lib/puppet/network/http/rack/rest.rb +2 -2
  71. data/lib/puppet/network/http/site.rb +1 -1
  72. data/lib/puppet/network/resolver.rb +2 -2
  73. data/lib/puppet/node/environment.rb +4 -2
  74. data/lib/puppet/parameter.rb +8 -0
  75. data/lib/puppet/parser/ast.rb +1 -1
  76. data/lib/puppet/parser/ast/resourceparam.rb +1 -1
  77. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
  78. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
  79. data/lib/puppet/parser/environment_compiler.rb +3 -0
  80. data/lib/puppet/parser/functions.rb +1 -1
  81. data/lib/puppet/parser/functions/epp.rb +3 -3
  82. data/lib/puppet/parser/functions/inline_epp.rb +5 -5
  83. data/lib/puppet/parser/resource.rb +3 -2
  84. data/lib/puppet/parser/resource/param.rb +6 -0
  85. data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
  86. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
  87. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -1
  88. data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
  89. data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -2
  90. data/lib/puppet/pops/evaluator/runtime3_support.rb +4 -4
  91. data/lib/puppet/pops/issues.rb +5 -0
  92. data/lib/puppet/pops/loaders.rb +1 -1
  93. data/lib/puppet/pops/lookup/hiera_config.rb +1 -0
  94. data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
  95. data/lib/puppet/pops/merge_strategy.rb +22 -18
  96. data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
  97. data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
  98. data/lib/puppet/pops/parser/locator.rb +1 -1
  99. data/lib/puppet/pops/parser/pn_parser.rb +17 -16
  100. data/lib/puppet/pops/puppet_stack.rb +51 -48
  101. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
  102. data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
  103. data/lib/puppet/pops/types/string_converter.rb +10 -10
  104. data/lib/puppet/pops/types/type_calculator.rb +24 -0
  105. data/lib/puppet/pops/types/types.rb +3 -3
  106. data/lib/puppet/pops/validation/checker4_0.rb +10 -0
  107. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  108. data/lib/puppet/property.rb +1 -1
  109. data/lib/puppet/property/ensure.rb +1 -1
  110. data/lib/puppet/provider/augeas/augeas.rb +1 -1
  111. data/lib/puppet/provider/cron/crontab.rb +1 -1
  112. data/lib/puppet/provider/exec.rb +6 -2
  113. data/lib/puppet/provider/file/posix.rb +5 -0
  114. data/lib/puppet/provider/group/groupadd.rb +19 -19
  115. data/lib/puppet/provider/group/windows_adsi.rb +3 -3
  116. data/lib/puppet/provider/mailalias/aliases.rb +1 -1
  117. data/lib/puppet/provider/mount.rb +1 -1
  118. data/lib/puppet/provider/mount/parsed.rb +8 -8
  119. data/lib/puppet/provider/nameservice.rb +10 -3
  120. data/lib/puppet/provider/nameservice/directoryservice.rb +1 -1
  121. data/lib/puppet/provider/nameservice/pw.rb +2 -2
  122. data/lib/puppet/provider/package/aix.rb +17 -2
  123. data/lib/puppet/provider/package/apt.rb +14 -3
  124. data/lib/puppet/provider/package/dnf.rb +1 -1
  125. data/lib/puppet/provider/package/dnfmodule.rb +141 -0
  126. data/lib/puppet/provider/package/dpkg.rb +16 -18
  127. data/lib/puppet/provider/package/fink.rb +20 -3
  128. data/lib/puppet/provider/package/openbsd.rb +14 -2
  129. data/lib/puppet/provider/package/pip.rb +37 -10
  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 +4 -4
  134. data/lib/puppet/provider/package/rpm.rb +57 -19
  135. data/lib/puppet/provider/package/windows/package.rb +1 -1
  136. data/lib/puppet/provider/package/yum.rb +35 -24
  137. data/lib/puppet/provider/package/zypper.rb +1 -0
  138. data/lib/puppet/provider/package_targetable.rb +5 -4
  139. data/lib/puppet/provider/parsedfile.rb +1 -1
  140. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +3 -3
  141. data/lib/puppet/provider/selmodule/semodule.rb +43 -26
  142. data/lib/puppet/provider/service/daemontools.rb +9 -9
  143. data/lib/puppet/provider/service/launchd.rb +20 -5
  144. data/lib/puppet/provider/service/openbsd.rb +1 -1
  145. data/lib/puppet/provider/service/rcng.rb +2 -2
  146. data/lib/puppet/provider/service/runit.rb +2 -8
  147. data/lib/puppet/provider/service/systemd.rb +35 -22
  148. data/lib/puppet/provider/service/windows.rb +8 -0
  149. data/lib/puppet/provider/user/directoryservice.rb +31 -6
  150. data/lib/puppet/provider/user/hpux.rb +1 -1
  151. data/lib/puppet/provider/user/pw.rb +12 -3
  152. data/lib/puppet/provider/user/user_role_add.rb +5 -1
  153. data/lib/puppet/provider/user/useradd.rb +62 -27
  154. data/lib/puppet/provider/user/windows_adsi.rb +4 -5
  155. data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
  156. data/lib/puppet/reference/indirection.rb +2 -2
  157. data/lib/puppet/reference/metaparameter.rb +1 -3
  158. data/lib/puppet/reference/providers.rb +1 -1
  159. data/lib/puppet/reference/type.rb +3 -9
  160. data/lib/puppet/reports.rb +1 -1
  161. data/lib/puppet/resource.rb +18 -1
  162. data/lib/puppet/resource/catalog.rb +1 -1
  163. data/lib/puppet/resource/type.rb +8 -0
  164. data/lib/puppet/settings.rb +43 -3
  165. data/lib/puppet/settings/environment_conf.rb +1 -0
  166. data/lib/puppet/ssl/certificate.rb +2 -1
  167. data/lib/puppet/ssl/certificate_authority.rb +6 -5
  168. data/lib/puppet/ssl/certificate_authority/interface.rb +1 -1
  169. data/lib/puppet/ssl/certificate_factory.rb +2 -2
  170. data/lib/puppet/ssl/host.rb +3 -3
  171. data/lib/puppet/ssl/oids.rb +1 -1
  172. data/lib/puppet/test/test_helper.rb +15 -10
  173. data/lib/puppet/transaction/report.rb +1 -1
  174. data/lib/puppet/transaction/resource_harness.rb +1 -1
  175. data/lib/puppet/type.rb +15 -4
  176. data/lib/puppet/type/cron.rb +1 -1
  177. data/lib/puppet/type/exec.rb +21 -9
  178. data/lib/puppet/type/file.rb +14 -2
  179. data/lib/puppet/type/file/data_sync.rb +5 -1
  180. data/lib/puppet/type/group.rb +4 -2
  181. data/lib/puppet/type/interface.rb +1 -1
  182. data/lib/puppet/type/notify.rb +3 -2
  183. data/lib/puppet/type/package.rb +107 -8
  184. data/lib/puppet/type/schedule.rb +1 -1
  185. data/lib/puppet/type/selboolean.rb +17 -3
  186. data/lib/puppet/type/service.rb +9 -10
  187. data/lib/puppet/type/user.rb +6 -24
  188. data/lib/puppet/type/yumrepo.rb +3 -7
  189. data/lib/puppet/util.rb +47 -25
  190. data/lib/puppet/util/command_line/trollop.rb +1 -1
  191. data/lib/puppet/util/execution.rb +4 -3
  192. data/lib/puppet/util/http_proxy.rb +24 -16
  193. data/lib/puppet/util/instance_loader.rb +1 -1
  194. data/lib/puppet/util/log.rb +1 -1
  195. data/lib/puppet/util/log/destinations.rb +3 -12
  196. data/lib/puppet/util/logging.rb +30 -18
  197. data/lib/puppet/util/metric.rb +2 -2
  198. data/lib/puppet/util/monkey_patches.rb +1 -1
  199. data/lib/puppet/util/nagios_maker.rb +2 -2
  200. data/lib/puppet/util/network_device/cisco/device.rb +1 -1
  201. data/lib/puppet/util/network_device/cisco/interface.rb +2 -2
  202. data/lib/puppet/util/network_device/transport/ssh.rb +1 -1
  203. data/lib/puppet/util/pidlock.rb +12 -6
  204. data/lib/puppet/util/plist.rb +6 -0
  205. data/lib/puppet/util/provider_features.rb +2 -4
  206. data/lib/puppet/util/rdoc.rb +1 -1
  207. data/lib/puppet/util/reference.rb +1 -1
  208. data/lib/puppet/util/resource_template.rb +1 -1
  209. data/lib/puppet/util/selinux.rb +8 -2
  210. data/lib/puppet/util/windows/adsi.rb +60 -30
  211. data/lib/puppet/util/windows/api_types.rb +45 -32
  212. data/lib/puppet/util/windows/eventlog.rb +1 -6
  213. data/lib/puppet/util/windows/principal.rb +8 -6
  214. data/lib/puppet/util/windows/process.rb +16 -15
  215. data/lib/puppet/util/windows/registry.rb +17 -15
  216. data/lib/puppet/util/windows/security.rb +3 -0
  217. data/lib/puppet/util/windows/service.rb +149 -4
  218. data/lib/puppet/util/windows/sid.rb +4 -3
  219. data/lib/puppet/vendor.rb +1 -1
  220. data/lib/puppet/version.rb +1 -1
  221. data/lib/puppet_pal.rb +2 -2
  222. data/locales/puppet.pot +479 -443
  223. data/man/man5/puppet.conf.5 +38 -8
  224. data/man/man8/puppet-agent.8 +2 -2
  225. data/man/man8/puppet-apply.8 +1 -1
  226. data/man/man8/puppet-ca.8 +1 -1
  227. data/man/man8/puppet-catalog.8 +1 -1
  228. data/man/man8/puppet-cert.8 +1 -1
  229. data/man/man8/puppet-certificate.8 +1 -1
  230. data/man/man8/puppet-certificate_request.8 +1 -1
  231. data/man/man8/puppet-certificate_revocation_list.8 +1 -1
  232. data/man/man8/puppet-config.8 +1 -1
  233. data/man/man8/puppet-describe.8 +1 -1
  234. data/man/man8/puppet-device.8 +1 -1
  235. data/man/man8/puppet-doc.8 +1 -1
  236. data/man/man8/puppet-epp.8 +1 -1
  237. data/man/man8/puppet-facts.8 +1 -1
  238. data/man/man8/puppet-filebucket.8 +16 -1
  239. data/man/man8/puppet-generate.8 +1 -1
  240. data/man/man8/puppet-help.8 +1 -1
  241. data/man/man8/puppet-key.8 +1 -1
  242. data/man/man8/puppet-lookup.8 +1 -1
  243. data/man/man8/puppet-man.8 +1 -1
  244. data/man/man8/puppet-master.8 +1 -1
  245. data/man/man8/puppet-module.8 +1 -1
  246. data/man/man8/puppet-node.8 +1 -1
  247. data/man/man8/puppet-parser.8 +1 -1
  248. data/man/man8/puppet-plugin.8 +1 -1
  249. data/man/man8/puppet-report.8 +1 -1
  250. data/man/man8/puppet-resource.8 +1 -1
  251. data/man/man8/puppet-script.8 +1 -1
  252. data/man/man8/puppet-status.8 +1 -1
  253. data/man/man8/puppet.8 +2 -2
  254. data/spec/fixtures/integration/provider/mailalias/aliases/test1 +1 -0
  255. data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +19 -0
  256. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
  257. data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
  258. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
  259. data/spec/integration/configurer_spec.rb +52 -0
  260. data/spec/integration/defaults_spec.rb +1 -2
  261. data/spec/integration/indirector/facts/facter_spec.rb +4 -0
  262. data/spec/integration/parser/compiler_spec.rb +11 -0
  263. data/spec/integration/provider/service/systemd_spec.rb +8 -5
  264. data/spec/integration/type/file_spec.rb +28 -0
  265. data/spec/integration/type/notify_spec.rb +46 -0
  266. data/spec/integration/util/execution_spec.rb +27 -0
  267. data/spec/integration/util/windows/adsi_spec.rb +6 -1
  268. data/spec/integration/util/windows/registry_spec.rb +7 -7
  269. data/spec/unit/agent_spec.rb +34 -26
  270. data/spec/unit/application/agent_spec.rb +18 -0
  271. data/spec/unit/application/apply_spec.rb +2 -12
  272. data/spec/unit/application/device_spec.rb +1 -1
  273. data/spec/unit/configurer/fact_handler_spec.rb +0 -4
  274. data/spec/unit/configurer_spec.rb +377 -397
  275. data/spec/unit/daemon_spec.rb +0 -1
  276. data/spec/unit/face/facts_spec.rb +9 -0
  277. data/spec/unit/face/plugin_spec.rb +8 -0
  278. data/spec/unit/file_system/uniquefile_spec.rb +11 -0
  279. data/spec/unit/forge/forge_spec.rb +1 -3
  280. data/spec/unit/forge/repository_spec.rb +1 -3
  281. data/spec/unit/indirector/catalog/compiler_spec.rb +45 -26
  282. data/spec/unit/indirector/resource/ral_spec.rb +4 -4
  283. data/spec/unit/module_tool/tar/mini_spec.rb +1 -1
  284. data/spec/unit/network/http/api/indirected_routes_spec.rb +28 -11
  285. data/spec/unit/network/http/connection_spec.rb +43 -1
  286. data/spec/unit/network/http/factory_spec.rb +27 -5
  287. data/spec/unit/network/http/pool_spec.rb +32 -0
  288. data/spec/unit/node_spec.rb +7 -4
  289. data/spec/unit/parser/environment_compiler_spec.rb +7 -0
  290. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -3
  291. data/spec/unit/pops/validator/validator_spec.rb +7 -0
  292. data/spec/unit/provider/exec_spec.rb +209 -0
  293. data/spec/unit/provider/group/groupadd_spec.rb +30 -1
  294. data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
  295. data/spec/unit/provider/package/aix_spec.rb +29 -0
  296. data/spec/unit/provider/package/apt_spec.rb +13 -2
  297. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  298. data/spec/unit/provider/package/aptrpm_spec.rb +1 -1
  299. data/spec/unit/provider/package/dnf_spec.rb +7 -0
  300. data/spec/unit/provider/package/dnfmodule_spec.rb +247 -0
  301. data/spec/unit/provider/package/dpkg_spec.rb +35 -7
  302. data/spec/unit/provider/package/openbsd_spec.rb +17 -0
  303. data/spec/unit/provider/package/pip_spec.rb +93 -22
  304. data/spec/unit/provider/package/pkg_spec.rb +13 -1
  305. data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
  306. data/spec/unit/provider/package/pkgng_spec.rb +36 -0
  307. data/spec/unit/provider/package/portage_spec.rb +4 -4
  308. data/spec/unit/provider/package/rpm_spec.rb +150 -16
  309. data/spec/unit/provider/package/yum_spec.rb +66 -0
  310. data/spec/unit/provider/package/zypper_spec.rb +13 -0
  311. data/spec/unit/provider/package_targetable_spec.rb +60 -0
  312. data/spec/unit/provider/selmodule_spec.rb +118 -47
  313. data/spec/unit/provider/service/daemontools_spec.rb +24 -0
  314. data/spec/unit/provider/service/launchd_spec.rb +28 -0
  315. data/spec/unit/provider/service/runit_spec.rb +24 -0
  316. data/spec/unit/provider/service/systemd_spec.rb +109 -36
  317. data/spec/unit/provider/service/windows_spec.rb +20 -0
  318. data/spec/unit/provider/user/directoryservice_spec.rb +41 -0
  319. data/spec/unit/provider/user/hpux_spec.rb +2 -2
  320. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  321. data/spec/unit/provider/user/pw_spec.rb +37 -0
  322. data/spec/unit/provider/user/useradd_spec.rb +122 -15
  323. data/spec/unit/provider/user/windows_adsi_spec.rb +3 -3
  324. data/spec/unit/puppet_pal_2pec.rb +3 -0
  325. data/spec/unit/resource_spec.rb +26 -1
  326. data/spec/unit/ssl/certificate_authority_spec.rb +2 -3
  327. data/spec/unit/ssl/certificate_spec.rb +7 -0
  328. data/spec/unit/test/test_helper_spec.rb +17 -0
  329. data/spec/unit/transaction_spec.rb +18 -0
  330. data/spec/unit/type/exec_spec.rb +15 -12
  331. data/spec/unit/type/file/content_spec.rb +9 -3
  332. data/spec/unit/type/file/source_spec.rb +4 -4
  333. data/spec/unit/type/file_spec.rb +9 -4
  334. data/spec/unit/type/package_spec.rb +8 -0
  335. data/spec/unit/type/schedule_spec.rb +3 -1
  336. data/spec/unit/type/selboolean_spec.rb +4 -6
  337. data/spec/unit/type/service_spec.rb +25 -8
  338. data/spec/unit/type/user_spec.rb +32 -26
  339. data/spec/unit/type/yumrepo_spec.rb +30 -0
  340. data/spec/unit/type_spec.rb +40 -0
  341. data/spec/unit/util/execution_spec.rb +16 -0
  342. data/spec/unit/util/http_proxy_spec.rb +121 -1
  343. data/spec/unit/util/log/destinations_spec.rb +2 -26
  344. data/spec/unit/util/log_spec.rb +0 -112
  345. data/spec/unit/util/logging_spec.rb +200 -0
  346. data/spec/unit/util/pidlock_spec.rb +67 -40
  347. data/spec/unit/util/plist_spec.rb +20 -0
  348. data/spec/unit/util/windows/adsi_spec.rb +55 -4
  349. data/spec/unit/util/windows/api_types_spec.rb +104 -40
  350. data/spec/unit/util/windows/service_spec.rb +9 -0
  351. data/spec/unit/util/windows/sid_spec.rb +2 -2
  352. data/tasks/manpages.rake +1 -0
  353. metadata +18 -13
  354. data/ext/windows/eventlog/Rakefile +0 -32
  355. data/ext/windows/eventlog/puppetres.dll +0 -0
  356. data/ext/windows/eventlog/puppetres.mc +0 -18
  357. data/lib/puppet/pops/loader/null_loader.rb +0 -60
  358. data/locales/ja/puppet.po +0 -12114
  359. data/spec/integration/test/test_helper_spec.rb +0 -31
@@ -22,6 +22,7 @@ require 'puppet/external/pson/common'
22
22
  require 'puppet/external/pson/version'
23
23
  require 'puppet/external/pson/pure'
24
24
  require 'puppet/gettext/config'
25
+ require 'puppet/defaults'
25
26
 
26
27
 
27
28
  #------------------------------------------------------------
@@ -87,6 +88,7 @@ module Puppet
87
88
 
88
89
  # Store a new default value.
89
90
  def self.define_settings(section, hash)
91
+ Puppet.deprecation_warning('The method Puppet.define_settings is deprecated and will be removed in a future release')
90
92
  @@settings.define_settings(section, hash)
91
93
  end
92
94
 
@@ -121,8 +123,9 @@ module Puppet
121
123
  Puppet::Util::RunMode[@@settings.preferred_run_mode]
122
124
  end
123
125
 
124
- # Load all of the settings.
125
- require 'puppet/defaults'
126
+ # Modify the settings with defaults defined in `initialize_default_settings` method in puppet/defaults.rb. This can
127
+ # be used in the initialization of new Puppet::Settings objects in the puppetserver project.
128
+ Puppet.initialize_default_settings!(settings)
126
129
 
127
130
  # Now that settings are loaded we have the code loaded to be able to issue
128
131
  # deprecation warnings. Warn if we're on a deprecated ruby version.
@@ -61,15 +61,15 @@ class Puppet::Agent
61
61
  end
62
62
  rescue Puppet::LockError
63
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
+ nil
65
65
  rescue RunTimeoutError => detail
66
66
  Puppet.log_exception(detail, _("Execution of %{client_class} did not complete within %{runtimeout} seconds and was terminated.") %
67
67
  {client_class: client_class,
68
68
  runtimeout: Puppet[:runtimeout]})
69
- return 1
69
+ nil
70
70
  rescue StandardError => detail
71
71
  Puppet.log_exception(detail, _("Could not run %{client_class}: %{detail}") % { client_class: client_class, detail: detail })
72
- 1
72
+ nil
73
73
  end
74
74
  end
75
75
  end
@@ -95,11 +95,9 @@ class Puppet::Agent
95
95
  atForkHandler.child
96
96
  $0 = _("puppet agent: applying configuration")
97
97
  begin
98
- exit(yield)
99
- rescue SystemExit
100
- exit(-1)
98
+ exit(yield || 1)
101
99
  rescue NoMemoryError
102
- exit(-2)
100
+ exit(254)
103
101
  end
104
102
  end
105
103
  ensure
@@ -107,12 +105,6 @@ class Puppet::Agent
107
105
  end
108
106
 
109
107
  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
108
  exit_code[1].exitstatus
117
109
  end
118
110
 
@@ -183,7 +183,7 @@ class Application
183
183
 
184
184
  # used to declare code that handle an option
185
185
  def option(*options, &block)
186
- long = options.find { |opt| opt =~ /^--/ }.gsub(/^--(?:\[no-\])?([^ =]+).*$/, '\1' ).gsub('-','_')
186
+ long = options.find { |opt| opt =~ /^--/ }.gsub(/^--(?:\[no-\])?([^ =]+).*$/, '\1' ).tr('-','_')
187
187
  fname = "handle_#{long}".intern
188
188
  if (block_given?)
189
189
  define_method(fname, &block)
@@ -245,7 +245,9 @@ generated by running puppet agent with '--genconfig'.
245
245
 
246
246
  * --job-id:
247
247
  Attach the specified job id to the catalog request and the report used for
248
- this agent run. This option only works when '--onetime' is used.
248
+ this agent run. This option only works when '--onetime' is used. When using
249
+ Puppet Enterprise this flag should not be used as the orchestrator sets the
250
+ job-id for you and it must be unique.
249
251
 
250
252
  * --logdest:
251
253
  Where to send log messages. Choose between 'syslog' (the POSIX syslog
@@ -344,6 +346,8 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
344
346
  # Setup signal traps immediately after daemonization so we clean up the daemon
345
347
  daemon.set_signal_traps
346
348
 
349
+ log_config if Puppet[:daemonize]
350
+
347
351
  wait_for_certificates
348
352
 
349
353
  if Puppet[:onetime]
@@ -354,6 +358,16 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
354
358
  end
355
359
  end
356
360
 
361
+ def log_config
362
+ #skip also config reading and parsing if debug is not enabled
363
+ return unless Puppet::Util::Log.sendlevel?(:debug)
364
+
365
+ Puppet.settings.stringify_settings(:agent, :all).each_pair do |k,v|
366
+ next if k.include?("password") || v.to_s.empty?
367
+ Puppet.debug("Using setting: #{k}=#{v}")
368
+ end
369
+ end
370
+
357
371
  def fingerprint
358
372
  host = Puppet::SSL::Host.new
359
373
  unless cert = host.certificate || host.certificate_request
@@ -260,8 +260,8 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
260
260
  catalog =
261
261
  begin
262
262
  Puppet::Resource::Catalog.indirection.find(node.name, :use_node => node)
263
- rescue Puppet::ParseErrorWithIssue, Puppet::Error
264
- # already logged and handled by the compiler for these two cases
263
+ rescue Puppet::Error
264
+ # already logged and handled by the compiler, including Puppet::ParseErrorWithIssue
265
265
  exit(1)
266
266
  end
267
267
 
@@ -64,9 +64,7 @@ class TypeDoc
64
64
 
65
65
  def list_types
66
66
  puts "These are the types known to puppet:\n"
67
- @types.keys.sort { |a, b|
68
- a.to_s <=> b.to_s
69
- }.each do |name|
67
+ @types.keys.sort_by(&:to_s).each do |name|
70
68
  type = @types[name]
71
69
  s = type.doc.gsub(/\s+/, " ")
72
70
  n = s.index(". ")
@@ -149,18 +147,14 @@ class TypeDoc
149
147
  end
150
148
 
151
149
  def format_providers(type)
152
- type.providers.sort { |a,b|
153
- a.to_s <=> b.to_s
154
- }.each { |prov|
150
+ type.providers.sort_by(&:to_s).each { |prov|
155
151
  puts "\n- **#{prov}**"
156
152
  puts @format.wrap(type.provider(prov).doc, :indent => 4, :scrub => true)
157
153
  }
158
154
  end
159
155
 
160
156
  def list_providers(type)
161
- list = type.providers.sort { |a,b|
162
- a.to_s <=> b.to_s
163
- }.join(", ")
157
+ list = type.providers.sort_by(&:to_s).join(", ")
164
158
  puts @format.wrap(list, :indent => 4)
165
159
  end
166
160
 
@@ -297,10 +297,10 @@ Licensed under the Apache 2.0 License
297
297
  Puppet.info _("retrieving resource: %{resource} from %{target} at %{scheme}%{url_host}%{port}%{url_path}") % { resource: type, target: device.name, scheme: scheme, url_host: device_url.host, port: port, url_path: device_url.path }
298
298
  resources = find_resources(type, name)
299
299
  if options[:to_yaml]
300
- text = resources.map do |resource|
301
- resource.prune_parameters(:parameters_to_include => @extra_params).to_hierayaml.force_encoding(Encoding.default_external)
302
- end.join("\n")
303
- text.prepend("#{type.downcase}:\n")
300
+ data = resources.map do |resource|
301
+ resource.prune_parameters(:parameters_to_include => @extra_params).to_hiera_hash
302
+ end.inject(:merge!)
303
+ text = YAML.dump(type.downcase => data)
304
304
  else
305
305
  text = resources.map do |resource|
306
306
  resource.prune_parameters(:parameters_to_include => @extra_params).to_manifest.force_encoding(Encoding.default_external)
@@ -154,7 +154,7 @@ HELP
154
154
  with_contents = options[:references].length <= 1
155
155
  exit_code = 0
156
156
  require 'puppet/util/reference'
157
- options[:references].sort { |a,b| a.to_s <=> b.to_s }.each do |name|
157
+ options[:references].sort_by(&:to_s).each do |name|
158
158
  raise _("Could not find reference %{name}") % { name: name } unless section = Puppet::Util::Reference.reference(name)
159
159
 
160
160
  begin
@@ -69,6 +69,19 @@ running as a user with valid Puppet certificates. Alternatively, you can
69
69
  use your local file bucket by specifying '--local', or by specifying
70
70
  '--bucket' with a local path.
71
71
 
72
+ > **Note**: Enabling and using the backup option, and by extension the
73
+ filebucket resource, requires appropriate planning and management to ensure
74
+ that sufficient disk space is available for the file backups. Generally, you
75
+ can implement this using one of the following two options:
76
+ - Use a `find` command and `crontab` entry to retain only the last X days
77
+ of file backups. For example:
78
+
79
+ ```shell
80
+ find /opt/puppetlabs/server/data/puppetserver/bucket -type f -mtime +45 -atime +45 -print0 | xargs -0 rm
81
+ ```
82
+
83
+ - Restrict the directory to a maximum size after which the oldest items are removed.
84
+
72
85
 
73
86
  OPTIONS
74
87
  -------
@@ -283,7 +283,7 @@ Copyright (c) 2015 Puppet Inc., LLC Licensed under the Apache 2.0 License
283
283
  'merge_hash_arrays' => !options[:merge_hash_arrays].nil?}
284
284
 
285
285
  if options[:prefix]
286
- merge_options.merge!({'knockout_prefix' => options[:prefix]})
286
+ merge_options['knockout_prefix'] = options[:prefix]
287
287
  end
288
288
 
289
289
  else
@@ -142,10 +142,10 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
142
142
  resources = find_or_save_resources(type, name, params)
143
143
 
144
144
  if options[:to_yaml]
145
- text = resources.map do |resource|
146
- resource.prune_parameters(:parameters_to_include => @extra_params).to_hierayaml.force_encoding(Encoding.default_external)
147
- end.join("\n")
148
- text.prepend("#{type.downcase}:\n")
145
+ data = resources.map do |resource|
146
+ resource.prune_parameters(:parameters_to_include => @extra_params).to_hiera_hash
147
+ end.inject(:merge!)
148
+ text = YAML.dump(type.downcase => data)
149
149
  else
150
150
  text = resources.map do |resource|
151
151
  resource.prune_parameters(:parameters_to_include => @extra_params).to_manifest.force_encoding(Encoding.default_external)
@@ -209,8 +209,8 @@ Copyright (c) 2017 Puppet Inc., LLC Licensed under the Apache 2.0 License
209
209
 
210
210
  compiler.compile()
211
211
 
212
- rescue Puppet::ParseErrorWithIssue, Puppet::Error
213
- # already logged and handled by the compiler for these two cases
212
+ rescue Puppet::Error
213
+ # already logged and handled by the compiler, including Puppet::ParseErrorWithIssue
214
214
  exit(1)
215
215
  end
216
216
 
@@ -144,9 +144,10 @@ class Puppet::Configurer
144
144
  facts_hash
145
145
  end
146
146
 
147
- def prepare_and_retrieve_catalog(options, query_options)
147
+ def prepare_and_retrieve_catalog(cached_catalog, options, query_options)
148
148
  # set report host name now that we have the fact
149
149
  options[:report].host = Puppet[:node_name_value]
150
+
150
151
  query_options[:transaction_uuid] = @transaction_uuid
151
152
  query_options[:job_id] = @job_id
152
153
  query_options[:static_catalog] = @static_catalog
@@ -156,24 +157,19 @@ class Puppet::Configurer
156
157
  query_options[:checksum_type] = @checksum_type.join('.')
157
158
 
158
159
  # apply passes in ral catalog
159
- catalog = options.delete(:catalog)
160
- return catalog if catalog
161
-
162
- # retrieve_catalog returns json catalog
163
- catalog = retrieve_catalog(query_options)
164
- return convert_catalog(catalog, @duration, options) if catalog
165
-
166
- Puppet.err _("Could not retrieve catalog; skipping run")
167
- nil
160
+ catalog = cached_catalog || options[:catalog]
161
+ unless catalog
162
+ # retrieve_catalog returns resource catalog
163
+ catalog = retrieve_catalog(query_options)
164
+ Puppet.err _("Could not retrieve catalog; skipping run") unless catalog
165
+ end
166
+ catalog
168
167
  end
169
168
 
170
169
  def prepare_and_retrieve_catalog_from_cache(options = {})
171
170
  result = retrieve_catalog_from_cache({:transaction_uuid => @transaction_uuid, :static_catalog => @static_catalog})
172
- if result
173
- Puppet.info _("Using cached catalog from environment '%{catalog_env}'") % { catalog_env: result.environment }
174
- return convert_catalog(result, @duration, options)
175
- end
176
- nil
171
+ Puppet.info _("Using cached catalog from environment '%{catalog_env}'") % { catalog_env: result.environment } if result
172
+ result
177
173
  end
178
174
 
179
175
  # Apply supplied catalog and return associated application report
@@ -251,13 +247,12 @@ class Puppet::Configurer
251
247
  Puppet::GettextConfig.reset_text_domain('agent')
252
248
  Puppet::ModuleTranslations.load_from_vardir(Puppet[:vardir])
253
249
 
254
- if catalog = prepare_and_retrieve_catalog_from_cache(options)
255
- options[:catalog] = catalog
250
+ if cached_catalog = prepare_and_retrieve_catalog_from_cache(options)
256
251
  @cached_catalog_status = 'explicitly_requested'
257
252
 
258
- if @environment != catalog.environment && !Puppet[:strict_environment_mode]
259
- Puppet.notice _("Local environment: '%{local_env}' doesn't match the environment of the cached catalog '%{catalog_env}', switching agent to '%{catalog_env}'.") % { local_env: @environment, catalog_env: catalog.environment }
260
- @environment = catalog.environment
253
+ if @environment != cached_catalog.environment && !Puppet[:strict_environment_mode]
254
+ Puppet.notice _("Local environment: '%{local_env}' doesn't match the environment of the cached catalog '%{catalog_env}', switching agent to '%{catalog_env}'.") % { local_env: @environment, catalog_env: cached_catalog.environment }
255
+ @environment = cached_catalog.environment
261
256
  end
262
257
 
263
258
  report.environment = @environment
@@ -278,7 +273,7 @@ class Puppet::Configurer
278
273
  configured_environment = Puppet[:environment] if Puppet.settings.set_by_config?(:environment)
279
274
 
280
275
  # We only need to find out the environment to run in if we don't already have a catalog
281
- unless (options[:catalog] || Puppet[:strict_environment_mode])
276
+ unless (cached_catalog || options[:catalog] || Puppet[:strict_environment_mode])
282
277
  begin
283
278
  node = nil
284
279
  node_retr_time = thinmark do
@@ -329,7 +324,7 @@ class Puppet::Configurer
329
324
  query_options = get_facts(options) unless query_options
330
325
  query_options[:configured_environment] = configured_environment
331
326
 
332
- unless catalog = prepare_and_retrieve_catalog(options, query_options)
327
+ unless catalog = prepare_and_retrieve_catalog(cached_catalog, options, query_options)
333
328
  return nil
334
329
  end
335
330
 
@@ -354,16 +349,37 @@ class Puppet::Configurer
354
349
  query_options = get_facts(options)
355
350
  query_options[:configured_environment] = configured_environment
356
351
 
357
- return nil unless catalog = prepare_and_retrieve_catalog(options, query_options)
352
+ # if we get here, ignore the cached catalog
353
+ return nil unless catalog = prepare_and_retrieve_catalog(nil, options, query_options)
358
354
  tries += 1
359
355
  end
360
356
 
357
+ # now that environment has converged, convert resource catalog into ral catalog
358
+ # unless we were given a RAL catalog
359
+ if !cached_catalog && options[:catalog]
360
+ ral_catalog = options[:catalog]
361
+ else
362
+ # REMIND @duration is the time spent loading the last catalog, and doesn't
363
+ # account for things like we failed to download and fell back to the cache
364
+ ral_catalog = convert_catalog(catalog, @duration, options)
365
+
366
+ # If not noop, commit the cached resource catalog (not ral catalog). Ideally
367
+ # we'd just copy the downloaded response body, instead of serializing the
368
+ # in-memory catalog, but that's hard due to the indirector.
369
+ indirection = Puppet::Resource::Catalog.indirection
370
+ if !Puppet[:noop] && indirection.cache?
371
+ request = indirection.request(:save, nil, catalog, environment: Puppet::Node::Environment.remote(catalog.environment))
372
+ Puppet.info("Caching catalog for #{request.key}")
373
+ indirection.cache.save(request)
374
+ end
375
+ end
376
+
361
377
  execute_prerun_command or return nil
362
378
 
363
- options[:report].code_id = catalog.code_id
364
- options[:report].catalog_uuid = catalog.catalog_uuid
379
+ options[:report].code_id = ral_catalog.code_id
380
+ options[:report].catalog_uuid = ral_catalog.catalog_uuid
365
381
  options[:report].cached_catalog_status = @cached_catalog_status
366
- apply_catalog(catalog, options)
382
+ apply_catalog(ral_catalog, options)
367
383
  true
368
384
  rescue => detail
369
385
  Puppet.log_exception(detail, _("Failed to apply catalog: %{detail}") % { detail: detail })
@@ -372,6 +388,14 @@ class Puppet::Configurer
372
388
  execute_postrun_command or return nil
373
389
  end
374
390
  ensure
391
+ if Puppet[:resubmit_facts]
392
+ # TODO: Should mark the report as "failed" if an error occurs and
393
+ # resubmit_facts returns false. There is currently no API for this.
394
+ resubmit_facts_time = thinmark { resubmit_facts }
395
+
396
+ report.add_times(:resubmit_facts, resubmit_facts_time)
397
+ end
398
+
375
399
  report.cached_catalog_status ||= @cached_catalog_status
376
400
  report.add_times(:total, Time.now - start)
377
401
  report.finalize_report
@@ -418,6 +442,40 @@ class Puppet::Configurer
418
442
  Puppet.log_exception(detail, _("Could not save last run local report: %{detail}") % { detail: detail })
419
443
  end
420
444
 
445
+ # Submit updated facts to the Puppet Server
446
+ #
447
+ # This method will clear all current fact values, load a fresh set of
448
+ # fact data, and then submit it to the Puppet Server.
449
+ #
450
+ # @return [true] If fact submission succeeds.
451
+ # @return [false] If an exception is raised during fact generation or
452
+ # submission.
453
+ def resubmit_facts
454
+ ::Facter.clear
455
+ facts = find_facts
456
+
457
+ saved_fact_terminus = Puppet::Node::Facts.indirection.terminus_class
458
+ begin
459
+ Puppet::Node::Facts.indirection.terminus_class = :rest
460
+
461
+ server = Puppet::Node::Facts::Rest.server
462
+ Puppet.info(_("Uploading facts for %{node} to %{server}") % {
463
+ node: facts.name,
464
+ server: server})
465
+
466
+ Puppet::Node::Facts.indirection.save(facts, nil, :environment => Puppet::Node::Environment.remote(@environment))
467
+
468
+ return true
469
+ ensure
470
+ Puppet::Node::Facts.indirection.terminus_class = saved_fact_terminus
471
+ end
472
+ rescue => detail
473
+ Puppet.log_exception(detail, _("Failed to submit facts: %{detail}") %
474
+ { detail: detail })
475
+
476
+ return false
477
+ end
478
+
421
479
  private
422
480
 
423
481
  def execute_from_setting(setting)
@@ -456,8 +514,8 @@ class Puppet::Configurer
456
514
  Puppet[:node_name_value],
457
515
  query_options.merge(
458
516
  :ignore_cache => true,
459
- # We never want to update the cached Catalog if we're running in noop mode.
460
- :ignore_cache_save => Puppet[:noop],
517
+ # don't update cache until after environment converges
518
+ :ignore_cache_save => true,
461
519
  :environment => Puppet::Node::Environment.remote(@environment),
462
520
  :fail_on_404 => true
463
521
  )
@@ -55,12 +55,8 @@ class Puppet::Configurer::Downloader
55
55
  :noop => false
56
56
  }
57
57
  if !Puppet.features.microsoft_windows?
58
- defargs.merge!(
59
- {
60
- :owner => Process.uid,
61
- :group => Process.gid
62
- }
63
- )
58
+ defargs[:owner] = Process.uid
59
+ defargs[:group] = Process.gid
64
60
  end
65
61
  return defargs
66
62
  end