puppet 5.5.16 → 5.5.21

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 +16 -11
  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
@@ -110,8 +110,10 @@ class Type
110
110
 
111
111
  # Allow declaring that a type is actually a capability
112
112
  class << self
113
+ # @deprecated application orchestration will be removed in puppet 7
113
114
  attr_accessor :is_capability
114
115
 
116
+ # @deprecated application orchestration will be removed in puppet 7
115
117
  def is_capability?
116
118
  c = is_capability
117
119
  c.nil? ? false : c
@@ -123,6 +125,8 @@ class Type
123
125
  # represent application instances, this implementation always returns
124
126
  # +false+. Having this method though makes code checking whether a
125
127
  # resource is an application instance simpler
128
+ #
129
+ # @deprecated application orchestration will be removed in puppet 7
126
130
  def self.application?
127
131
  false
128
132
  end
@@ -1447,7 +1451,7 @@ class Type
1447
1451
  }
1448
1452
 
1449
1453
  Tags are useful for things like applying a subset of a host's configuration
1450
- with [the `tags` setting](/puppet/latest/configuration.html#tags)
1454
+ with [the `tags` setting](https://puppet.com/docs/puppet/latest/configuration.html#tags)
1451
1455
  (e.g. `puppet agent --test --tags bootstrap`)."
1452
1456
 
1453
1457
  munge do |tags|
@@ -1667,6 +1671,7 @@ class Type
1667
1671
  }
1668
1672
  end
1669
1673
 
1674
+ # @deprecated application orchestration will be removed in puppet 7
1670
1675
  newmetaparam(:export, :parent => RelationshipMetaparam, :attributes => {:direction => :out, :events => :NONE}) do
1671
1676
  desc <<EOS
1672
1677
  Export a capability resource.
@@ -1692,6 +1697,7 @@ web { server:
1692
1697
  EOS
1693
1698
  end
1694
1699
 
1700
+ # @deprecated application orchestration will be removed in puppet 7
1695
1701
  newmetaparam(:consume, :parent => RelationshipMetaparam, :attributes => {:direction => :in, :events => :NONE}) do
1696
1702
  desc <<EOS
1697
1703
  Consume a capability resource.
@@ -1909,9 +1915,7 @@ end
1909
1915
  # Since we're mixing @doc with text from other sources, we must normalize
1910
1916
  # its indentation with scrub. But we don't need to manually scrub the
1911
1917
  # provider's doc string, since markdown_definitionlist sanitizes its inputs.
1912
- scrub(@doc) + "Available providers are:\n\n" + parenttype.providers.sort { |a,b|
1913
- a.to_s <=> b.to_s
1914
- }.collect { |i|
1918
+ scrub(@doc) + "Available providers are:\n\n" + parenttype.providers.sort_by(&:to_s).collect { |i|
1915
1919
  markdown_definitionlist( i, scrub(parenttype().provider(i).doc) )
1916
1920
  }.join
1917
1921
  end
@@ -2443,6 +2447,13 @@ end
2443
2447
  err(_("Unable to mark '%{name}' as sensitive: the property itself is not defined on %{type}.") % { name: name, type: type })
2444
2448
  end
2445
2449
  end
2450
+
2451
+ parameters.each do |name, param|
2452
+ next if param.sensitive
2453
+ if param.is_a?(Puppet::Parameter)
2454
+ param.sensitive = param.is_sensitive if param.respond_to?(:is_sensitive)
2455
+ end
2456
+ end
2446
2457
  end
2447
2458
 
2448
2459
  private
@@ -98,7 +98,7 @@ Puppet::Type.newtype(:cron) do
98
98
  # if we can lengthen it (e.g., mon => monday).
99
99
  if tmp.length == 3
100
100
  ary.each_with_index { |name, index|
101
- if tmp.upcase == name[0..2].upcase
101
+ if tmp.casecmp(name[0..2]).zero?
102
102
  return index
103
103
  end
104
104
  }
@@ -150,9 +150,13 @@ module Puppet
150
150
  end
151
151
  end
152
152
  unless log == :false
153
- @output.split(/\n/).each { |line|
154
- self.send(log, line)
155
- }
153
+ if @resource.parameter(:command).sensitive
154
+ self.send(log, "[output redacted]")
155
+ else
156
+ @output.split(/\n/).each { |line|
157
+ self.send(log, line)
158
+ }
159
+ end
156
160
  end
157
161
  end
158
162
 
@@ -455,9 +459,13 @@ module Puppet
455
459
  return false
456
460
  end
457
461
 
458
- output.split(/\n/).each { |line|
459
- self.debug(line)
460
- }
462
+ if sensitive
463
+ self.debug("[output redacted]")
464
+ else
465
+ output.split(/\n/).each { |line|
466
+ self.debug(line)
467
+ }
468
+ end
461
469
 
462
470
  status.exitstatus != 0
463
471
  end
@@ -507,9 +515,13 @@ module Puppet
507
515
  return false
508
516
  end
509
517
 
510
- output.split(/\n/).each { |line|
511
- self.debug(line)
512
- }
518
+ if sensitive
519
+ self.debug("[output redacted]")
520
+ else
521
+ output.split(/\n/).each { |line|
522
+ self.debug(line)
523
+ }
524
+ end
513
525
 
514
526
  status.exitstatus == 0
515
527
  end
@@ -105,6 +105,19 @@ Puppet::Type.newtype(:file) do
105
105
  balancer to direct all filebucket traffic to a single master, or use
106
106
  something like an out-of-band rsync task to synchronize the content on all
107
107
  masters.
108
+
109
+ > **Note**: Enabling and using the backup option, and by extension the
110
+ filebucket resource, requires appropriate planning and management to ensure
111
+ that sufficient disk space is available for the file backups. Generally, you
112
+ can implement this using one of the following two options:
113
+ - Use a `find` command and `crontab` entry to retain only the last X days
114
+ of file backups. For example,
115
+
116
+ ```shell script
117
+ find /opt/puppetlabs/server/data/puppetserver/bucket -type f -mtime +45 -atime +45 -print0 | xargs -0 rm
118
+ ```
119
+
120
+ - Restrict the directory to a maximum size after which the oldest items are removed.
108
121
  EOT
109
122
 
110
123
  defaultto "puppet"
@@ -572,8 +585,7 @@ Puppet::Type.newtype(:file) do
572
585
  # remote system.
573
586
  mark_children_for_purging(children) if self.purge?
574
587
 
575
- # REVISIT: sort_by is more efficient?
576
- result = children.values.sort { |a, b| a[:path] <=> b[:path] }
588
+ result = children.values.sort_by { |a| a[:path] }
577
589
  remove_less_specific_files(result)
578
590
  end
579
591
 
@@ -42,7 +42,11 @@ module Puppet
42
42
  send resource[:loglevel], "[diff redacted]"
43
43
  else
44
44
  write_temporarily(param) do |path|
45
- send resource[:loglevel], "\n" + diff(resource[:path], path)
45
+ diff_output = diff(resource[:path], path)
46
+ if diff_output.encoding == Encoding::BINARY || !diff_output.valid_encoding?
47
+ diff_output = "Binary files #{resource[:path]} and #{path} differ"
48
+ end
49
+ send resource[:loglevel], "\n" + diff_output
46
50
  end
47
51
  end
48
52
  end
@@ -175,7 +175,8 @@ module Puppet
175
175
  end
176
176
 
177
177
  newparam(:ia_load_module, :required_features => :manages_aix_lam) do
178
- desc "The name of the I&A module to use to manage this user"
178
+ desc "The name of the I&A module to use to manage this group.
179
+ This should be set to `files` if managing local groups."
179
180
  end
180
181
 
181
182
  newproperty(:attributes, :parent => Puppet::Property::KeyValue, :required_features => :manages_aix_lam) do
@@ -216,7 +217,8 @@ module Puppet
216
217
  :required_features => :libuser,
217
218
  :parent => Puppet::Parameter::Boolean) do
218
219
  desc "Forces the management of local accounts when accounts are also
219
- being managed by some other NSS"
220
+ being managed by some other NSS. For AIX, refer to the
221
+ `ia_load_module` parameter."
220
222
  defaultto false
221
223
  end
222
224
 
@@ -105,7 +105,7 @@ Puppet::Type.newtype(:interface) do
105
105
 
106
106
  def value_to_s(value)
107
107
  value = [value] unless value.is_a?(Array)
108
- value.map{ |v| "#{v[1].to_s}/#{v[0]} #{v[2]}"}.join(",")
108
+ value.map{ |v| "#{v[1]}/#{v[0]} #{v[2]}"}.join(",")
109
109
  end
110
110
 
111
111
  def change_to_s(currentvalue, newvalue)
@@ -11,11 +11,12 @@ module Puppet
11
11
  newproperty(:message, :idempotent => false) do
12
12
  desc "The message to be sent to the log."
13
13
  def sync
14
+ message = @sensitive ? 'Sensitive [value redacted]' : self.should
14
15
  case @resource["withpath"]
15
16
  when :true
16
- send(@resource[:loglevel], self.should)
17
+ send(@resource[:loglevel], message)
17
18
  else
18
- Puppet.send(@resource[:loglevel], self.should)
19
+ Puppet.send(@resource[:loglevel], message)
19
20
  end
20
21
  return
21
22
  end
@@ -1,3 +1,4 @@
1
+ # coding: utf-8
1
2
  # Define the different packaging systems. Each package system is implemented
2
3
  # in a module, which then gets used to individually extend each package object.
3
4
  # This allows packages to exist on the same machine using different packaging
@@ -53,13 +54,17 @@ module Puppet
53
54
  feature :holdable, "The provider is capable of placing packages on hold
54
55
  such that they are not automatically upgraded as a result of
55
56
  other package dependencies unless explicit action is taken by
56
- a user or another package. Held is considered a superset of
57
- installed.",
58
- :methods => [:hold]
57
+ a user or another package.",
58
+ :methods => [:hold, :unhold]
59
+ feature :install_only, "The provider accepts options to only install packages never update (kernels, etc.)"
59
60
  feature :install_options, "The provider accepts options to be
60
61
  passed to the installer command."
61
62
  feature :uninstall_options, "The provider accepts options to be
62
63
  passed to the uninstaller command."
64
+ feature :disableable, "The provider can disable packages. This feature is used by specifying `disabled` as the
65
+ desired value for the package.",
66
+ :methods => [:disable]
67
+ feature :supports_flavors, "The provider accepts flavors, which are specific variants of packages."
63
68
  feature :package_settings, "The provider accepts package_settings to be
64
69
  ensured for the given package. The meaning and format of these settings is
65
70
  provider-specific.",
@@ -99,7 +104,11 @@ module Puppet
99
104
  end
100
105
 
101
106
  newvalue(:held, :event => :package_held, :required_features => :holdable) do
102
- provider.hold
107
+ provider.deprecated_hold
108
+ end
109
+
110
+ newvalue(:disabled, :required_features => :disableable) do
111
+ provider.disable
103
112
  end
104
113
 
105
114
  # Alias the 'present' value.
@@ -149,7 +158,7 @@ module Puppet
149
158
  @should.each { |should|
150
159
  case should
151
160
  when :present
152
- return true unless [:absent, :purged, :held].include?(is)
161
+ return true unless [:absent, :purged, :held, :disabled].include?(is)
153
162
  when :latest
154
163
  # Short-circuit packages that are not present
155
164
  return false if is == :absent || is == :purged
@@ -399,6 +408,16 @@ module Puppet
399
408
  end
400
409
  end
401
410
 
411
+ newproperty(:flavor, :required_features => :supports_flavors) do
412
+ desc "OpenBSD and DNF modules support 'flavors', which are
413
+ further specifications for which type of package you want."
414
+ validate do |value|
415
+ if [:disabled, "disabled"].include?(@resource[:ensure]) && value
416
+ raise ArgumentError, _('Cannot have both `ensure => disabled` and `flavor`')
417
+ end
418
+ end
419
+ end
420
+
402
421
  newparam(:source) do
403
422
  desc "Where to find the package file. This is only used by providers that don't
404
423
  automatically download packages from a central repository. (For example:
@@ -478,9 +497,35 @@ module Puppet
478
497
  newvalues(:true, :false)
479
498
  end
480
499
 
481
- newparam(:flavor) do
482
- desc "OpenBSD supports 'flavors', which are further specifications for
483
- which type of package you want."
500
+ newparam(:enable_only, :boolean => false, :parent => Puppet::Parameter::Boolean) do
501
+ desc <<-EOT
502
+ Tells `dnf module` to only enable a specific module, instead
503
+ of installing its default profile.
504
+
505
+ Modules with no default profile will be enabled automatically
506
+ without the use of this parameter.
507
+
508
+ Conflicts with the `flavor` property, which selects a profile
509
+ to install.
510
+ EOT
511
+ defaultto false
512
+
513
+ validate do |value|
514
+ if [true, :true, "true"].include?(value) && @resource[:flavor]
515
+ raise ArgumentError, _('Cannot have both `enable_only => true` and `flavor`')
516
+ end
517
+ if [:disabled, "disabled"].include?(@resource[:ensure])
518
+ raise ArgumentError, _('Cannot have both `ensure => disabled` and `enable_only => true`')
519
+ end
520
+ end
521
+ end
522
+
523
+ newparam(:install_only, :boolean => false, :parent => Puppet::Parameter::Boolean, :required_features => :install_only) do
524
+ desc <<-EOT
525
+ It should be set for packages that should only ever be installed,
526
+ never updated. Kernels in particular fall into this category.
527
+ EOT
528
+ defaultto false
484
529
  end
485
530
 
486
531
  newparam(:install_options, :parent => Puppet::Parameter::PackageOptions, :required_features => :install_options) do
@@ -601,5 +646,59 @@ module Puppet
601
646
  provider.reinstall
602
647
  end
603
648
  end
649
+
650
+ newproperty(:mark, :required_features => :holdable) do
651
+ mark_doc='Valid values are: hold/none'
652
+ desc <<-EOT
653
+ Set to hold to tell Debian apt/Solaris pkg to hold the package version
654
+
655
+ #{mark_doc}
656
+ Default is "none". Mark can be specified with or without `ensure`,
657
+ if `ensure` is missing will default to "present".
658
+
659
+ Mark cannot be specified together with "purged", "absent" or "held"
660
+ values for `ensure`.
661
+ EOT
662
+ newvalues(:hold, :none)
663
+ munge do |value|
664
+ case value
665
+ when "hold", :hold
666
+ :hold
667
+ when "none", :none
668
+ :none
669
+ else
670
+ raise ArgumentError, _('Invalid hold value %{value}. %{doc}') % { value: value.inspect, doc: mark_doc}
671
+ end
672
+ end
673
+
674
+ def insync?(is)
675
+ @should[0] == is
676
+ end
677
+
678
+ def should
679
+ @should[0] if @should && @should.is_a?(Array) && @should.size == 1
680
+ end
681
+
682
+ def retrieve
683
+ provider.properties[:mark]
684
+ end
685
+
686
+ def sync
687
+ if @should[0] == :hold
688
+ provider.hold
689
+ else
690
+ provider.unhold
691
+ end
692
+ end
693
+ end
694
+
695
+ validate do
696
+ if :held == @parameters[:ensure].should
697
+ warning '"ensure=>held" has been deprecated and will be removed in a future version, use "mark=hold" instead'
698
+ end
699
+ if @parameters[:mark] && [:absent, :purged, :held].include?(@parameters[:ensure].should)
700
+ raise ArgumentError, _('You cannot use "mark" property while "ensure" is one of ["absent", "purged", "held"]')
701
+ end
702
+ end
604
703
  end
605
704
  end
@@ -389,7 +389,7 @@ module Puppet
389
389
  end
390
390
 
391
391
  def weekday_integer?(value)
392
- value.is_a?(Integer) && (0..6).include?(value)
392
+ value.is_a?(Integer) && (0..6).cover?(value)
393
393
  end
394
394
 
395
395
  def weekday_string?(value)
@@ -9,9 +9,23 @@ module Puppet
9
9
  end
10
10
 
11
11
  newproperty(:value) do
12
- desc "Whether the SELinux boolean should be enabled or disabled."
13
- newvalue(:on)
14
- newvalue(:off)
12
+ value_doc = 'Valid values are: "on"/"true"/"off"/"false"'
13
+ desc <<-EOT
14
+ Whether the SELinux boolean should be enabled or disabled.
15
+ #{value_doc}
16
+ EOT
17
+
18
+ newvalues(:on, :off, :true, :false)
19
+ munge do |value|
20
+ case value
21
+ when true, :true, 'true', :on, 'on'
22
+ :on
23
+ when false, :false, 'false', :off, 'off'
24
+ :off
25
+ else
26
+ raise ArgumentError, _("Invalid value %{value}. %{doc}") % { value: value.inspect, doc: value_doc}
27
+ end
28
+ end
15
29
  end
16
30
 
17
31
  newparam(:persistent) do
@@ -73,20 +73,19 @@ module Puppet
73
73
  provider.enabled?
74
74
  end
75
75
 
76
- # This only makes sense on systemd systems. Static services cannot be enabled
77
- # or disabled manually.
78
- def insync?(current)
79
- if provider.respond_to?(:cached_enabled?) && provider.cached_enabled? == 'static'
80
- Puppet.debug("Unable to enable or disable static service #{@resource[:name]}")
81
- return true
82
- end
76
+ # This only works on Windows systems.
77
+ newvalue(:delayed, :event => :service_delayed_start) do
78
+ provider.delayed_start
79
+ end
83
80
 
81
+ def insync?(current)
82
+ return provider.enabled_insync?(current) if provider.respond_to?(:enabled_insync?)
84
83
  super(current)
85
84
  end
86
85
 
87
86
  validate do |value|
88
- if value == :manual and !Puppet.features.microsoft_windows?
89
- raise Puppet::Error.new(_("Setting enable to manual is only supported on Microsoft Windows."))
87
+ if (value == :manual || value == :delayed) && !Puppet.features.microsoft_windows?
88
+ raise Puppet::Error.new(_("Setting enable to %{value} is only supported on Microsoft Windows.") % { value: value.to_s} )
90
89
  end
91
90
  end
92
91
  end
@@ -223,7 +222,7 @@ module Puppet
223
222
  desc "The control variable used to manage services (originally for HP-UX).
224
223
  Defaults to the upcased service name plus `START` replacing dots with
225
224
  underscores, for those providers that support the `controllable` feature."
226
- defaultto { resource.name.gsub(".","_").upcase + "_START" if resource.provider.controllable? }
225
+ defaultto { resource.name.tr(".","_").upcase + "_START" if resource.provider.controllable? }
227
226
  end
228
227
 
229
228
  newparam :hasrestart do