puppet 5.5.17-x86-mingw32 → 5.5.22-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 (340) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +1 -1
  3. data/Gemfile +4 -5
  4. data/Gemfile.lock +59 -55
  5. data/ext/build_defaults.yaml +1 -0
  6. data/ext/cert_inspector +3 -3
  7. data/ext/puppet-test +2 -2
  8. data/ext/regexp_nodes/regexp_nodes.rb +4 -4
  9. data/ext/windows/service/daemon.rb +54 -8
  10. data/install.rb +6 -6
  11. data/lib/puppet.rb +5 -2
  12. data/lib/puppet/agent.rb +5 -13
  13. data/lib/puppet/application.rb +1 -1
  14. data/lib/puppet/application/agent.rb +3 -1
  15. data/lib/puppet/application/apply.rb +2 -2
  16. data/lib/puppet/application/describe.rb +3 -9
  17. data/lib/puppet/application/doc.rb +1 -1
  18. data/lib/puppet/application/filebucket.rb +13 -0
  19. data/lib/puppet/application/lookup.rb +1 -1
  20. data/lib/puppet/application/script.rb +2 -2
  21. data/lib/puppet/configurer.rb +106 -31
  22. data/lib/puppet/configurer/downloader.rb +33 -16
  23. data/lib/puppet/daemon.rb +1 -1
  24. data/lib/puppet/defaults.rb +86 -40
  25. data/lib/puppet/error.rb +9 -1
  26. data/lib/puppet/external/nagios/base.rb +1 -1
  27. data/lib/puppet/face/ca.rb +1 -1
  28. data/lib/puppet/face/module/list.rb +5 -5
  29. data/lib/puppet/face/module/search.rb +1 -1
  30. data/lib/puppet/face/module/uninstall.rb +1 -1
  31. data/lib/puppet/face/module/upgrade.rb +1 -1
  32. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  33. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  34. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  35. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  36. data/lib/puppet/file_system.rb +0 -8
  37. data/lib/puppet/file_system/memory_file.rb +1 -1
  38. data/lib/puppet/file_system/posix.rb +3 -2
  39. data/lib/puppet/file_system/uniquefile.rb +4 -0
  40. data/lib/puppet/forge.rb +3 -3
  41. data/lib/puppet/functions/epp.rb +4 -4
  42. data/lib/puppet/functions/inline_epp.rb +5 -5
  43. data/lib/puppet/functions/new.rb +8 -3
  44. data/lib/puppet/functions/reduce.rb +2 -4
  45. data/lib/puppet/functions/reverse_each.rb +1 -1
  46. data/lib/puppet/functions/step.rb +1 -1
  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 +6 -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 +1 -1
  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/pool.rb +7 -1
  69. data/lib/puppet/network/http/rack/rest.rb +2 -2
  70. data/lib/puppet/network/http/site.rb +1 -1
  71. data/lib/puppet/network/resolver.rb +2 -2
  72. data/lib/puppet/node/environment.rb +11 -3
  73. data/lib/puppet/parser/ast.rb +1 -1
  74. data/lib/puppet/parser/ast/resourceparam.rb +1 -1
  75. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
  76. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
  77. data/lib/puppet/parser/environment_compiler.rb +3 -0
  78. data/lib/puppet/parser/functions.rb +14 -10
  79. data/lib/puppet/parser/functions/epp.rb +3 -3
  80. data/lib/puppet/parser/functions/inline_epp.rb +5 -5
  81. data/lib/puppet/parser/resource.rb +3 -2
  82. data/lib/puppet/parser/resource/param.rb +6 -0
  83. data/lib/puppet/pops/adaptable.rb +7 -13
  84. data/lib/puppet/pops/adapters.rb +8 -4
  85. data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
  86. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
  87. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
  88. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -1
  89. data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
  90. data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -2
  91. data/lib/puppet/pops/evaluator/runtime3_support.rb +4 -4
  92. data/lib/puppet/pops/issues.rb +5 -0
  93. data/lib/puppet/pops/loaders.rb +1 -1
  94. data/lib/puppet/pops/lookup/hiera_config.rb +1 -0
  95. data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
  96. data/lib/puppet/pops/merge_strategy.rb +22 -18
  97. data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
  98. data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
  99. data/lib/puppet/pops/parser/locator.rb +1 -1
  100. data/lib/puppet/pops/parser/pn_parser.rb +17 -16
  101. data/lib/puppet/pops/puppet_stack.rb +51 -48
  102. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
  103. data/lib/puppet/pops/types/iterable.rb +34 -8
  104. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  105. data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
  106. data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
  107. data/lib/puppet/pops/types/string_converter.rb +10 -10
  108. data/lib/puppet/pops/types/type_calculator.rb +24 -0
  109. data/lib/puppet/pops/types/types.rb +3 -3
  110. data/lib/puppet/pops/validation/checker4_0.rb +29 -15
  111. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  112. data/lib/puppet/property.rb +1 -1
  113. data/lib/puppet/property/ensure.rb +1 -1
  114. data/lib/puppet/provider/augeas/augeas.rb +1 -1
  115. data/lib/puppet/provider/cron/crontab.rb +1 -1
  116. data/lib/puppet/provider/exec.rb +6 -2
  117. data/lib/puppet/provider/group/groupadd.rb +19 -19
  118. data/lib/puppet/provider/group/windows_adsi.rb +3 -3
  119. data/lib/puppet/provider/mailalias/aliases.rb +1 -1
  120. data/lib/puppet/provider/mount.rb +1 -1
  121. data/lib/puppet/provider/mount/parsed.rb +8 -8
  122. data/lib/puppet/provider/nameservice/directoryservice.rb +1 -1
  123. data/lib/puppet/provider/nameservice/pw.rb +2 -2
  124. data/lib/puppet/provider/package/aix.rb +17 -2
  125. data/lib/puppet/provider/package/apt.rb +14 -3
  126. data/lib/puppet/provider/package/dnfmodule.rb +141 -0
  127. data/lib/puppet/provider/package/dpkg.rb +16 -18
  128. data/lib/puppet/provider/package/fink.rb +20 -3
  129. data/lib/puppet/provider/package/gem.rb +4 -2
  130. data/lib/puppet/provider/package/openbsd.rb +14 -2
  131. data/lib/puppet/provider/package/pip.rb +37 -10
  132. data/lib/puppet/provider/package/pkg.rb +18 -5
  133. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  134. data/lib/puppet/provider/package/pkgng.rb +16 -4
  135. data/lib/puppet/provider/package/portage.rb +4 -4
  136. data/lib/puppet/provider/package/puppet_gem.rb +5 -0
  137. data/lib/puppet/provider/package/rpm.rb +6 -6
  138. data/lib/puppet/provider/package/windows/package.rb +1 -1
  139. data/lib/puppet/provider/package/yum.rb +28 -20
  140. data/lib/puppet/provider/package/zypper.rb +1 -0
  141. data/lib/puppet/provider/package_targetable.rb +5 -4
  142. data/lib/puppet/provider/parsedfile.rb +1 -1
  143. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +3 -3
  144. data/lib/puppet/provider/selmodule/semodule.rb +43 -26
  145. data/lib/puppet/provider/service/daemontools.rb +9 -9
  146. data/lib/puppet/provider/service/openbsd.rb +1 -1
  147. data/lib/puppet/provider/service/rcng.rb +2 -2
  148. data/lib/puppet/provider/service/runit.rb +2 -8
  149. data/lib/puppet/provider/service/systemd.rb +31 -13
  150. data/lib/puppet/provider/user/directoryservice.rb +31 -6
  151. data/lib/puppet/provider/user/hpux.rb +1 -1
  152. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  153. data/lib/puppet/provider/user/useradd.rb +39 -20
  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 +1 -1
  162. data/lib/puppet/resource/catalog.rb +1 -1
  163. data/lib/puppet/resource/type.rb +10 -1
  164. data/lib/puppet/settings.rb +3 -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 +20 -12
  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 +8 -4
  176. data/lib/puppet/type/cron.rb +1 -1
  177. data/lib/puppet/type/exec.rb +7 -3
  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 +97 -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 +2 -8
  187. data/lib/puppet/type/user.rb +5 -9
  188. data/lib/puppet/util.rb +35 -12
  189. data/lib/puppet/util/autoload.rb +9 -7
  190. data/lib/puppet/util/command_line/trollop.rb +1 -1
  191. data/lib/puppet/util/http_proxy.rb +8 -14
  192. data/lib/puppet/util/instance_loader.rb +1 -1
  193. data/lib/puppet/util/log.rb +1 -1
  194. data/lib/puppet/util/log/destinations.rb +3 -12
  195. data/lib/puppet/util/logging.rb +30 -18
  196. data/lib/puppet/util/metric.rb +2 -2
  197. data/lib/puppet/util/monkey_patches.rb +1 -1
  198. data/lib/puppet/util/nagios_maker.rb +2 -2
  199. data/lib/puppet/util/network_device/cisco/device.rb +1 -1
  200. data/lib/puppet/util/network_device/cisco/interface.rb +2 -2
  201. data/lib/puppet/util/network_device/transport/ssh.rb +1 -1
  202. data/lib/puppet/util/pidlock.rb +12 -6
  203. data/lib/puppet/util/plist.rb +6 -0
  204. data/lib/puppet/util/provider_features.rb +2 -4
  205. data/lib/puppet/util/rdoc.rb +1 -1
  206. data/lib/puppet/util/reference.rb +1 -1
  207. data/lib/puppet/util/resource_template.rb +1 -1
  208. data/lib/puppet/util/selinux.rb +3 -1
  209. data/lib/puppet/util/windows/adsi.rb +60 -30
  210. data/lib/puppet/util/windows/api_types.rb +45 -32
  211. data/lib/puppet/util/windows/eventlog.rb +1 -6
  212. data/lib/puppet/util/windows/principal.rb +8 -6
  213. data/lib/puppet/util/windows/process.rb +16 -15
  214. data/lib/puppet/util/windows/registry.rb +17 -15
  215. data/lib/puppet/util/windows/security.rb +1 -0
  216. data/lib/puppet/util/windows/sid.rb +3 -3
  217. data/lib/puppet/vendor.rb +1 -1
  218. data/lib/puppet/version.rb +1 -1
  219. data/lib/puppet_pal.rb +2 -2
  220. data/locales/puppet.pot +362 -318
  221. data/man/man5/puppet.conf.5 +39 -9
  222. data/man/man8/puppet-agent.8 +2 -2
  223. data/man/man8/puppet-apply.8 +1 -1
  224. data/man/man8/puppet-ca.8 +1 -1
  225. data/man/man8/puppet-catalog.8 +1 -1
  226. data/man/man8/puppet-cert.8 +1 -1
  227. data/man/man8/puppet-certificate.8 +1 -1
  228. data/man/man8/puppet-certificate_request.8 +1 -1
  229. data/man/man8/puppet-certificate_revocation_list.8 +1 -1
  230. data/man/man8/puppet-config.8 +1 -1
  231. data/man/man8/puppet-describe.8 +1 -1
  232. data/man/man8/puppet-device.8 +1 -1
  233. data/man/man8/puppet-doc.8 +1 -1
  234. data/man/man8/puppet-epp.8 +1 -1
  235. data/man/man8/puppet-facts.8 +1 -1
  236. data/man/man8/puppet-filebucket.8 +16 -1
  237. data/man/man8/puppet-generate.8 +1 -1
  238. data/man/man8/puppet-help.8 +1 -1
  239. data/man/man8/puppet-key.8 +1 -1
  240. data/man/man8/puppet-lookup.8 +1 -1
  241. data/man/man8/puppet-man.8 +1 -1
  242. data/man/man8/puppet-master.8 +1 -1
  243. data/man/man8/puppet-module.8 +1 -1
  244. data/man/man8/puppet-node.8 +1 -1
  245. data/man/man8/puppet-parser.8 +1 -1
  246. data/man/man8/puppet-plugin.8 +1 -1
  247. data/man/man8/puppet-report.8 +1 -1
  248. data/man/man8/puppet-resource.8 +1 -1
  249. data/man/man8/puppet-script.8 +1 -1
  250. data/man/man8/puppet-status.8 +1 -1
  251. data/man/man8/puppet.8 +2 -2
  252. data/spec/fixtures/integration/provider/mailalias/aliases/test1 +1 -0
  253. data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +19 -0
  254. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
  255. data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
  256. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
  257. data/spec/integration/configurer_spec.rb +66 -0
  258. data/spec/integration/data_binding_spec.rb +1 -0
  259. data/spec/integration/defaults_spec.rb +1 -2
  260. data/spec/integration/faces/plugin_spec.rb +29 -47
  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/type/notify_spec.rb +46 -0
  264. data/spec/integration/util/windows/adsi_spec.rb +6 -1
  265. data/spec/integration/util/windows/registry_spec.rb +7 -7
  266. data/spec/shared_contexts/types_setup.rb +2 -0
  267. data/spec/unit/agent_spec.rb +34 -26
  268. data/spec/unit/application/apply_spec.rb +2 -12
  269. data/spec/unit/configurer/downloader_spec.rb +10 -0
  270. data/spec/unit/configurer/fact_handler_spec.rb +0 -4
  271. data/spec/unit/configurer_spec.rb +430 -415
  272. data/spec/unit/daemon_spec.rb +0 -1
  273. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  274. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  275. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  276. data/spec/unit/file_system/uniquefile_spec.rb +11 -0
  277. data/spec/unit/forge/forge_spec.rb +1 -3
  278. data/spec/unit/forge/repository_spec.rb +1 -3
  279. data/spec/unit/indirector/catalog/compiler_spec.rb +45 -26
  280. data/spec/unit/indirector/resource/ral_spec.rb +4 -4
  281. data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
  282. data/spec/unit/network/http/connection_spec.rb +43 -1
  283. data/spec/unit/network/http/pool_spec.rb +32 -0
  284. data/spec/unit/node_spec.rb +7 -4
  285. data/spec/unit/parser/environment_compiler_spec.rb +7 -0
  286. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -3
  287. data/spec/unit/provider/exec_spec.rb +209 -0
  288. data/spec/unit/provider/group/groupadd_spec.rb +30 -1
  289. data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
  290. data/spec/unit/provider/package/aix_spec.rb +29 -0
  291. data/spec/unit/provider/package/apt_spec.rb +13 -2
  292. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  293. data/spec/unit/provider/package/dnfmodule_spec.rb +247 -0
  294. data/spec/unit/provider/package/dpkg_spec.rb +35 -7
  295. data/spec/unit/provider/package/openbsd_spec.rb +17 -0
  296. data/spec/unit/provider/package/pip_spec.rb +93 -22
  297. data/spec/unit/provider/package/pkg_spec.rb +13 -1
  298. data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
  299. data/spec/unit/provider/package/pkgng_spec.rb +36 -0
  300. data/spec/unit/provider/package/portage_spec.rb +4 -4
  301. data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
  302. data/spec/unit/provider/package/yum_spec.rb +90 -0
  303. data/spec/unit/provider/package/zypper_spec.rb +13 -0
  304. data/spec/unit/provider/package_targetable_spec.rb +60 -0
  305. data/spec/unit/provider/selmodule_spec.rb +118 -47
  306. data/spec/unit/provider/service/daemontools_spec.rb +24 -0
  307. data/spec/unit/provider/service/runit_spec.rb +24 -0
  308. data/spec/unit/provider/service/systemd_spec.rb +109 -36
  309. data/spec/unit/provider/user/directoryservice_spec.rb +41 -0
  310. data/spec/unit/provider/user/hpux_spec.rb +2 -2
  311. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  312. data/spec/unit/provider/user/useradd_spec.rb +81 -16
  313. data/spec/unit/provider/user/windows_adsi_spec.rb +3 -3
  314. data/spec/unit/puppet_pal_2pec.rb +3 -0
  315. data/spec/unit/ssl/certificate_authority_spec.rb +2 -3
  316. data/spec/unit/ssl/certificate_spec.rb +7 -0
  317. data/spec/unit/ssl/host_spec.rb +2 -0
  318. data/spec/unit/test/test_helper_spec.rb +17 -0
  319. data/spec/unit/type/exec_spec.rb +6 -12
  320. data/spec/unit/type/file/content_spec.rb +9 -3
  321. data/spec/unit/type/file_spec.rb +9 -4
  322. data/spec/unit/type/package_spec.rb +8 -0
  323. data/spec/unit/type/selboolean_spec.rb +4 -6
  324. data/spec/unit/type/service_spec.rb +9 -8
  325. data/spec/unit/type/user_spec.rb +19 -13
  326. data/spec/unit/util/execution_spec.rb +16 -0
  327. data/spec/unit/util/http_proxy_spec.rb +97 -0
  328. data/spec/unit/util/log/destinations_spec.rb +2 -26
  329. data/spec/unit/util/log_spec.rb +0 -138
  330. data/spec/unit/util/logging_spec.rb +200 -0
  331. data/spec/unit/util/pidlock_spec.rb +67 -40
  332. data/spec/unit/util/plist_spec.rb +20 -0
  333. data/spec/unit/util/windows/adsi_spec.rb +55 -4
  334. data/spec/unit/util/windows/api_types_spec.rb +104 -40
  335. data/spec/unit/util/windows/sid_spec.rb +2 -2
  336. data/tasks/manpages.rake +1 -0
  337. metadata +16 -7
  338. data/lib/puppet/pops/loader/null_loader.rb +0 -60
  339. data/locales/ja/puppet.po +0 -12114
  340. data/spec/integration/test/test_helper_spec.rb +0 -31
@@ -346,7 +346,7 @@ class Puppet::Transaction::Report
346
346
  report = raw_summary
347
347
 
348
348
  ret = ""
349
- report.keys.sort { |a,b| a.to_s <=> b.to_s }.each do |key|
349
+ report.keys.sort_by(&:to_s).each do |key|
350
350
  ret += "#{Puppet::Util::Metric.labelize(key)}:\n"
351
351
 
352
352
  report[key].keys.sort { |a,b|
@@ -99,7 +99,7 @@ class Puppet::Transaction::ResourceHarness
99
99
  # We persist the last known values for the properties of a resource after resource
100
100
  # application.
101
101
  # @param [Puppet::Type] resource resource whose values we are to persist.
102
- # @param [ResourceApplicationContent] context the application context to operate on.
102
+ # @param [ResourceApplicationContext] context the application context to operate on.
103
103
  def persist_system_values(resource, context)
104
104
  param_to_event = {}
105
105
  context.status.events.each do |ev|
@@ -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
@@ -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
 
@@ -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
@@ -54,14 +54,17 @@ module Puppet
54
54
  feature :holdable, "The provider is capable of placing packages on hold
55
55
  such that they are not automatically upgraded as a result of
56
56
  other package dependencies unless explicit action is taken by
57
- a user or another package. Held is considered a superset of
58
- installed.",
59
- :methods => [:hold]
57
+ a user or another package.",
58
+ :methods => [:hold, :unhold]
60
59
  feature :install_only, "The provider accepts options to only install packages never update (kernels, etc.)"
61
60
  feature :install_options, "The provider accepts options to be
62
61
  passed to the installer command."
63
62
  feature :uninstall_options, "The provider accepts options to be
64
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."
65
68
  feature :package_settings, "The provider accepts package_settings to be
66
69
  ensured for the given package. The meaning and format of these settings is
67
70
  provider-specific.",
@@ -101,7 +104,11 @@ module Puppet
101
104
  end
102
105
 
103
106
  newvalue(:held, :event => :package_held, :required_features => :holdable) do
104
- provider.hold
107
+ provider.deprecated_hold
108
+ end
109
+
110
+ newvalue(:disabled, :required_features => :disableable) do
111
+ provider.disable
105
112
  end
106
113
 
107
114
  # Alias the 'present' value.
@@ -151,7 +158,7 @@ module Puppet
151
158
  @should.each { |should|
152
159
  case should
153
160
  when :present
154
- return true unless [:absent, :purged, :held].include?(is)
161
+ return true unless [:absent, :purged, :held, :disabled].include?(is)
155
162
  when :latest
156
163
  # Short-circuit packages that are not present
157
164
  return false if is == :absent || is == :purged
@@ -401,6 +408,16 @@ module Puppet
401
408
  end
402
409
  end
403
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
+
404
421
  newparam(:source) do
405
422
  desc "Where to find the package file. This is only used by providers that don't
406
423
  automatically download packages from a central repository. (For example:
@@ -480,9 +497,27 @@ module Puppet
480
497
  newvalues(:true, :false)
481
498
  end
482
499
 
483
- newparam(:flavor) do
484
- desc "OpenBSD supports 'flavors', which are further specifications for
485
- 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
486
521
  end
487
522
 
488
523
  newparam(:install_only, :boolean => false, :parent => Puppet::Parameter::Boolean, :required_features => :install_only) do
@@ -611,5 +646,59 @@ module Puppet
611
646
  provider.reinstall
612
647
  end
613
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
614
703
  end
615
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
@@ -78,14 +78,8 @@ module Puppet
78
78
  provider.delayed_start
79
79
  end
80
80
 
81
- # This only makes sense on systemd systems. Static services cannot be enabled
82
- # or disabled manually.
83
81
  def insync?(current)
84
- if provider.respond_to?(:cached_enabled?) && provider.cached_enabled? == 'static'
85
- Puppet.debug("Unable to enable or disable static service #{@resource[:name]}")
86
- return true
87
- end
88
-
82
+ return provider.enabled_insync?(current) if provider.respond_to?(:enabled_insync?)
89
83
  super(current)
90
84
  end
91
85
 
@@ -228,7 +222,7 @@ module Puppet
228
222
  desc "The control variable used to manage services (originally for HP-UX).
229
223
  Defaults to the upcased service name plus `START` replacing dots with
230
224
  underscores, for those providers that support the `controllable` feature."
231
- defaultto { resource.name.gsub(".","_").upcase + "_START" if resource.provider.controllable? }
225
+ defaultto { resource.name.tr(".","_").upcase + "_START" if resource.provider.controllable? }
232
226
  end
233
227
 
234
228
  newparam :hasrestart do
@@ -614,7 +614,8 @@ module Puppet
614
614
  end
615
615
 
616
616
  newparam(:ia_load_module, :required_features => :manages_aix_lam) do
617
- desc "The name of the I&A module to use to manage this user."
617
+ desc "The name of the I&A module to use to manage this user.
618
+ This should be set to `files` if managing local users."
618
619
  end
619
620
 
620
621
  newproperty(:attributes, :parent => Puppet::Property::KeyValue, :required_features => :manages_aix_lam) do
@@ -665,7 +666,8 @@ module Puppet
665
666
  :required_features => :libuser,
666
667
  :parent => Puppet::Parameter::Boolean) do
667
668
  desc "Forces the management of local accounts when accounts are also
668
- being managed by some other NSS"
669
+ being managed by some other NSS. For AIX, refer to the
670
+ `ia_load_module` parameter."
669
671
  defaultto false
670
672
  end
671
673
 
@@ -717,17 +719,11 @@ module Puppet
717
719
  value = test_sym if [:true, :false].include? test_sym
718
720
 
719
721
  return [] if value == :false
720
- home = resource[:home]
721
- if value == :true and not home
722
- raise ArgumentError, _("purge_ssh_keys can only be true for users with a defined home directory")
723
- end
722
+ home = resource[:home] || Dir.home(resource[:name])
724
723
 
725
724
  return [ "#{home}/.ssh/authorized_keys" ] if value == :true
726
725
  # value is an array - munge each value
727
726
  [ value ].flatten.map do |entry|
728
- if entry =~ /^~|^%h/ and not home
729
- raise ArgumentError, _("purge_ssh_keys value '%{value}' meta character ~ or %{home_placeholder} only allowed for users with a defined home directory") % { value: value, home_placeholder: '%h' }
730
- end
731
727
  entry.gsub!(/^~\//, "#{home}/")
732
728
  entry.gsub!(/^%h\//, "#{home}/")
733
729
  entry
@@ -323,7 +323,7 @@ module Util
323
323
  params = { :scheme => 'file' }
324
324
 
325
325
  if Puppet.features.microsoft_windows?
326
- path = path.gsub(/\\/, '/')
326
+ path = path.tr('\\', '/')
327
327
 
328
328
  if unc = /^\/\/([^\/]+)(\/.+)/.match(path)
329
329
  params[:host] = unc[1]
@@ -524,21 +524,44 @@ module Util
524
524
 
525
525
  module_function :thinmark
526
526
 
527
+ PUPPET_STACK_INSERTION_FRAME = /.*puppet_stack\.rb.*in.*`stack'/
528
+
527
529
  # utility method to get the current call stack and format it to a human-readable string (which some IDEs/editors
528
530
  # will recognize as links to the line numbers in the trace)
529
- def self.pretty_backtrace(backtrace = caller(1))
530
- backtrace.collect do |line|
531
- _, path, rest = /^(.*):(\d+.*)$/.match(line).to_a
532
- # If the path doesn't exist - like in one test, and like could happen in
533
- # the world - we should just tolerate it and carry on. --daniel 2012-09-05
534
- # Also, if we don't match, just include the whole line.
535
- if path
536
- path = Pathname(path).realpath rescue path
537
- "#{path}:#{rest}"
531
+ def self.pretty_backtrace(backtrace = caller(1), puppetstack = [])
532
+ format_backtrace_array(backtrace, puppetstack).join("\n")
533
+ end
534
+
535
+ # arguments may be a Ruby stack, with an optional Puppet stack argument,
536
+ # or just a Puppet stack.
537
+ # stacks may be an Array of Strings "/foo.rb:0 in `blah'" or
538
+ # an Array of Arrays that represent a frame: ["/foo.pp", 0]
539
+ def self.format_backtrace_array(primary_stack, puppetstack = [])
540
+ primary_stack.flat_map do |frame|
541
+ frame = format_puppetstack_frame(frame) if frame.is_a?(Array)
542
+ primary_frame = resolve_stackframe(frame)
543
+
544
+ if primary_frame =~ PUPPET_STACK_INSERTION_FRAME && !puppetstack.empty?
545
+ [resolve_stackframe(format_puppetstack_frame(puppetstack.shift)),
546
+ primary_frame]
538
547
  else
539
- line
548
+ primary_frame
540
549
  end
541
- end.join("\n")
550
+ end
551
+ end
552
+
553
+ def self.resolve_stackframe(frame)
554
+ _, path, rest = /^(.*):(\d+.*)$/.match(frame).to_a
555
+ if path
556
+ path = Pathname(path).realpath rescue path
557
+ "#{path}:#{rest}"
558
+ else
559
+ frame
560
+ end
561
+ end
562
+
563
+ def self.format_puppetstack_frame(file_and_lineno)
564
+ file_and_lineno.join(':')
542
565
  end
543
566
 
544
567
  # Replace a file, securely. This takes a block, and passes it the file