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
@@ -255,21 +255,7 @@ module Puppet
255
255
  raise ArgumentError, _("Passwords cannot include ':'") if value.is_a?(String) and value.include?(":")
256
256
  end
257
257
 
258
- def change_to_s(currentvalue, newvalue)
259
- if currentvalue == :absent
260
- return _("created password")
261
- else
262
- return _("changed password")
263
- end
264
- end
265
-
266
- def is_to_s( currentvalue )
267
- return _('[old password hash redacted]')
268
- end
269
- def should_to_s( newvalue )
270
- return _('[new password hash redacted]')
271
- end
272
-
258
+ sensitive true
273
259
  end
274
260
 
275
261
  newproperty(:password_min_age, :required_features => :manages_password_age) do
@@ -628,7 +614,8 @@ module Puppet
628
614
  end
629
615
 
630
616
  newparam(:ia_load_module, :required_features => :manages_aix_lam) do
631
- 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."
632
619
  end
633
620
 
634
621
  newproperty(:attributes, :parent => Puppet::Property::KeyValue, :required_features => :manages_aix_lam) do
@@ -679,7 +666,8 @@ module Puppet
679
666
  :required_features => :libuser,
680
667
  :parent => Puppet::Parameter::Boolean) do
681
668
  desc "Forces the management of local accounts when accounts are also
682
- being managed by some other NSS"
669
+ being managed by some other NSS. For AIX, refer to the
670
+ `ia_load_module` parameter."
683
671
  defaultto false
684
672
  end
685
673
 
@@ -731,17 +719,11 @@ module Puppet
731
719
  value = test_sym if [:true, :false].include? test_sym
732
720
 
733
721
  return [] if value == :false
734
- home = resource[:home]
735
- if value == :true and not home
736
- raise ArgumentError, _("purge_ssh_keys can only be true for users with a defined home directory")
737
- end
722
+ home = resource[:home] || Dir.home(resource[:name])
738
723
 
739
724
  return [ "#{home}/.ssh/authorized_keys" ] if value == :true
740
725
  # value is an array - munge each value
741
726
  [ value ].flatten.map do |entry|
742
- if entry =~ /^~|^%h/ and not home
743
- 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' }
744
- end
745
727
  entry.gsub!(/^~\//, "#{home}/")
746
728
  entry.gsub!(/^%h\//, "#{home}/")
747
729
  entry
@@ -321,6 +321,8 @@ Puppet::Type.newtype(:yumrepo) do
321
321
  desc "Password for this proxy. #{ABSENT_DOC}"
322
322
 
323
323
  newvalues(/.*/, :absent)
324
+
325
+ sensitive true
324
326
  end
325
327
 
326
328
  newproperty(:s3_enabled) do
@@ -423,12 +425,6 @@ Puppet::Type.newtype(:yumrepo) do
423
425
  desc "Password to use with the username for basic authentication.
424
426
  #{ABSENT_DOC}"
425
427
  newvalues(/.*/, :absent)
426
- end
427
-
428
- private
429
-
430
- def set_sensitive_parameters(sensitive_parameters)
431
- parameter(:password).sensitive = true if parameter(:password)
432
- super(sensitive_parameters)
428
+ sensitive true
433
429
  end
434
430
  end
@@ -27,21 +27,20 @@ module Util
27
27
 
28
28
  extend Puppet::Util::SymbolicFileMode
29
29
 
30
- def default_env
31
- Puppet.features.microsoft_windows? ?
32
- :windows :
33
- :posix
34
- end
35
- module_function :default_env
30
+ DEFAULT_ENV = if Puppet::Util::Platform.windows?
31
+ :windows
32
+ else
33
+ :posix
34
+ end.freeze
36
35
 
37
36
  # @param name [String] The name of the environment variable to retrieve
38
37
  # @param mode [Symbol] Which operating system mode to use e.g. :posix or :windows. Use nil to autodetect
39
38
  # @return [String] Value of the specified environment variable. nil if it does not exist
40
39
  # @api private
41
- def get_env(name, mode = default_env)
40
+ def get_env(name, mode = DEFAULT_ENV)
42
41
  if mode == :windows
43
- Puppet::Util::Windows::Process.get_environment_strings.each do |key, value |
44
- if name.casecmp(key) == 0 then
42
+ Puppet::Util::Windows::Process.get_environment_strings.find do |key, value|
43
+ if name.casecmp(key) == 0
45
44
  return value
46
45
  end
47
46
  end
@@ -55,7 +54,7 @@ module Util
55
54
  # @param mode [Symbol] Which operating system mode to use e.g. :posix or :windows. Use nil to autodetect
56
55
  # @return [Hash] A hashtable of all environment variables
57
56
  # @api private
58
- def get_environment(mode = default_env)
57
+ def get_environment(mode = DEFAULT_ENV)
59
58
  case mode
60
59
  when :posix
61
60
  ENV.to_hash
@@ -70,7 +69,7 @@ module Util
70
69
  # Removes all environment variables
71
70
  # @param mode [Symbol] Which operating system mode to use e.g. :posix or :windows. Use nil to autodetect
72
71
  # @api private
73
- def clear_environment(mode = default_env)
72
+ def clear_environment(mode = DEFAULT_ENV)
74
73
  case mode
75
74
  when :posix
76
75
  ENV.clear
@@ -88,7 +87,7 @@ module Util
88
87
  # @param value [String] The value to set the variable to. nil deletes the environment variable
89
88
  # @param mode [Symbol] Which operating system mode to use e.g. :posix or :windows. Use nil to autodetect
90
89
  # @api private
91
- def set_env(name, value = nil, mode = default_env)
90
+ def set_env(name, value = nil, mode = DEFAULT_ENV)
92
91
  case mode
93
92
  when :posix
94
93
  ENV[name] = value
@@ -103,7 +102,7 @@ module Util
103
102
  # @param name [Hash] Environment variables to merge into the existing environment. nil values will remove the variable
104
103
  # @param mode [Symbol] Which operating system mode to use e.g. :posix or :windows. Use nil to autodetect
105
104
  # @api private
106
- def merge_environment(env_hash, mode = default_env)
105
+ def merge_environment(env_hash, mode = DEFAULT_ENV)
107
106
  case mode
108
107
  when :posix
109
108
  env_hash.each { |name, val| ENV[name.to_s] = val }
@@ -323,7 +322,7 @@ module Util
323
322
  params = { :scheme => 'file' }
324
323
 
325
324
  if Puppet.features.microsoft_windows?
326
- path = path.gsub(/\\/, '/')
325
+ path = path.tr('\\', '/')
327
326
 
328
327
  if unc = /^\/\/([^\/]+)(\/.+)/.match(path)
329
328
  params[:host] = unc[1]
@@ -524,21 +523,44 @@ module Util
524
523
 
525
524
  module_function :thinmark
526
525
 
526
+ PUPPET_STACK_INSERTION_FRAME = /.*puppet_stack\.rb.*in.*`stack'/
527
+
527
528
  # utility method to get the current call stack and format it to a human-readable string (which some IDEs/editors
528
529
  # 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}"
530
+ def self.pretty_backtrace(backtrace = caller(1), puppetstack = [])
531
+ format_backtrace_array(backtrace, puppetstack).join("\n")
532
+ end
533
+
534
+ # arguments may be a Ruby stack, with an optional Puppet stack argument,
535
+ # or just a Puppet stack.
536
+ # stacks may be an Array of Strings "/foo.rb:0 in `blah'" or
537
+ # an Array of Arrays that represent a frame: ["/foo.pp", 0]
538
+ def self.format_backtrace_array(primary_stack, puppetstack = [])
539
+ primary_stack.flat_map do |frame|
540
+ frame = format_puppetstack_frame(frame) if frame.is_a?(Array)
541
+ primary_frame = resolve_stackframe(frame)
542
+
543
+ if primary_frame =~ PUPPET_STACK_INSERTION_FRAME && !puppetstack.empty?
544
+ [resolve_stackframe(format_puppetstack_frame(puppetstack.shift)),
545
+ primary_frame]
538
546
  else
539
- line
547
+ primary_frame
540
548
  end
541
- end.join("\n")
549
+ end
550
+ end
551
+
552
+ def self.resolve_stackframe(frame)
553
+ _, path, rest = /^(.*):(\d+.*)$/.match(frame).to_a
554
+ if path
555
+ path = Pathname(path).realpath rescue path
556
+ "#{path}:#{rest}"
557
+ else
558
+ frame
559
+ end
560
+ end
561
+
562
+ def self.format_puppetstack_frame(file_and_lineno)
563
+ file_and_lineno.join(':')
542
564
  end
543
565
 
544
566
  # Replace a file, securely. This takes a block, and passes it the file
@@ -215,7 +215,7 @@ class Parser
215
215
  opts[:type] = opts[:type] || type_from_default || :flag
216
216
 
217
217
  ## fill in :long
218
- opts[:long] = opts[:long] ? opts[:long].to_s : name.to_s.gsub("_", "-")
218
+ opts[:long] = opts[:long] ? opts[:long].to_s : name.to_s.tr("_", "-")
219
219
  opts[:long] =
220
220
  case opts[:long]
221
221
  when /^--([^-].*)$/
@@ -162,15 +162,16 @@ module Puppet::Util::Execution
162
162
 
163
163
  options = default_options.merge(options)
164
164
 
165
- if options[:sensitive]
166
- command_str = '[redacted]'
167
- elsif command.is_a?(Array)
165
+ if command.is_a?(Array)
168
166
  command = command.flatten.map(&:to_s)
169
167
  command_str = command.join(" ")
170
168
  elsif command.is_a?(String)
171
169
  command_str = command
172
170
  end
173
171
 
172
+ # do this after processing 'command' array or string
173
+ command_str = '[redacted]' if options[:sensitive]
174
+
174
175
  user_log_s = ''
175
176
  if options[:uid]
176
177
  user_log_s << " uid=#{options[:uid]}"
@@ -4,13 +4,15 @@ require 'puppet/network/http'
4
4
 
5
5
  module Puppet::Util::HttpProxy
6
6
  def self.proxy(uri)
7
- if self.no_proxy?(uri)
8
- proxy_class = Net::HTTP::Proxy(nil)
7
+ if http_proxy_host && !no_proxy?(uri)
8
+ Net::HTTP.new(uri.host, uri.port, self.http_proxy_host, self.http_proxy_port, self.http_proxy_user, self.http_proxy_password)
9
9
  else
10
- proxy_class = Net::HTTP::Proxy(self.http_proxy_host, self.http_proxy_port, self.http_proxy_user, self.http_proxy_password)
10
+ http = Net::HTTP.new(uri.host, uri.port, nil, nil, nil, nil)
11
+ # Net::HTTP defaults the proxy port even though we said not to
12
+ # use one. Set it to nil so caller is not surprised
13
+ http.proxy_port = nil if http.respond_to?(:proxy_port=)
14
+ http
11
15
  end
12
-
13
- return proxy_class.new(uri.host, uri.port)
14
16
  end
15
17
 
16
18
  def self.http_proxy_env
@@ -33,7 +35,7 @@ module Puppet::Util::HttpProxy
33
35
  # .example.com
34
36
  # We'll accommodate both here.
35
37
  def self.no_proxy?(dest)
36
- unless no_proxy_env = ENV["no_proxy"] || ENV["NO_PROXY"]
38
+ unless no_proxy = self.no_proxy
37
39
  return false
38
40
  end
39
41
 
@@ -45,18 +47,10 @@ module Puppet::Util::HttpProxy
45
47
  end
46
48
  end
47
49
 
48
- no_proxy_env.split(/\s*,\s*/).each do |d|
50
+ no_proxy.split(/\s*,\s*/).each do |d|
49
51
  host, port = d.split(':')
50
52
  host = Regexp.escape(host).gsub('\*', '.*')
51
53
 
52
- #If the host of this no_proxy value starts with '.', this entry is
53
- #a domain level entry. Don't pin the regex to the beginning of the entry.
54
- #If it does not start with a '.' then it is a host specific entry and
55
- #should be matched to the destination starting at the beginning.
56
- unless host =~ /^\\\./
57
- host = "^#{host}"
58
- end
59
-
60
54
  #If this no_proxy entry specifies a port, we want to match it against
61
55
  #the destination port. Otherwise just match hosts.
62
56
  if port
@@ -127,6 +121,20 @@ module Puppet::Util::HttpProxy
127
121
  return Puppet.settings[:http_proxy_password]
128
122
  end
129
123
 
124
+ def self.no_proxy
125
+ no_proxy_env = ENV["no_proxy"] || ENV["NO_PROXY"]
126
+
127
+ if no_proxy_env
128
+ return no_proxy_env
129
+ end
130
+
131
+ if Puppet.settings[:no_proxy] == 'none'
132
+ return nil
133
+ end
134
+
135
+ return Puppet.settings[:no_proxy]
136
+ end
137
+
130
138
  # Return a Net::HTTP::Proxy object.
131
139
  #
132
140
  # This method optionally configures SSL correctly if the URI scheme is
@@ -178,7 +186,7 @@ module Puppet::Util::HttpProxy
178
186
 
179
187
  headers = { 'Accept' => '*/*', 'User-Agent' => Puppet[:http_user_agent] }
180
188
  if Puppet.features.zlib?
181
- headers.merge!({"Accept-Encoding" => Puppet::Network::HTTP::Compression::ACCEPT_ENCODING})
189
+ headers["Accept-Encoding"] = Puppet::Network::HTTP::Compression::ACCEPT_ENCODING
182
190
  end
183
191
 
184
192
  response = proxy.send(:head, current_uri.path, headers)
@@ -40,7 +40,7 @@ module Puppet::Util::InstanceLoader
40
40
  instance_loader(type).loadall
41
41
 
42
42
  # Use this method so they all get loaded
43
- loaded_instances(type).sort { |a,b| a.to_s <=> b.to_s }.each do |name|
43
+ loaded_instances(type).sort_by(&:to_s).each do |name|
44
44
  mod = self.loaded_instance(type, name)
45
45
  docs << "#{name}\n#{"-" * name.to_s.length}\n"
46
46
 
@@ -392,7 +392,7 @@ class Puppet::Util::Log
392
392
  end
393
393
 
394
394
  def to_report
395
- "#{time} #{source} (#{level}): #{to_s}"
395
+ "#{time} #{source} (#{level}): #{self}"
396
396
  end
397
397
 
398
398
  def to_s
@@ -34,7 +34,7 @@ Puppet::Util::Log.newdesttype :syslog do
34
34
  end
35
35
  else
36
36
  msg.to_s.split("\n").each do |line|
37
- @syslog.send(msg.level, "(%s) %s" % [msg.source.to_s.gsub("%", ""),
37
+ @syslog.send(msg.level, "(%s) %s" % [msg.source.to_s.delete("%"),
38
38
  line.gsub("%", '%%')
39
39
  ]
40
40
  )
@@ -77,7 +77,7 @@ Puppet::Util::Log.newdesttype :file do
77
77
 
78
78
  # create the log file, if it doesn't already exist
79
79
  need_array_start = false
80
- file_exists = File.exists?(path)
80
+ file_exists = Puppet::FileSystem.exist?(path)
81
81
  if @json == 1
82
82
  need_array_start = true
83
83
  if file_exists
@@ -90,18 +90,9 @@ Puppet::Util::Log.newdesttype :file do
90
90
  end
91
91
  end
92
92
 
93
- file = File.open(path, File::WRONLY|File::CREAT|File::APPEND)
93
+ file = File.open(path, File::WRONLY|File::CREAT|File::APPEND)
94
94
  file.puts('[') if need_array_start
95
95
 
96
- # Give ownership to the user and group puppet will run as
97
- if Puppet.features.root? && !Puppet::Util::Platform.windows? && !file_exists
98
- begin
99
- FileUtils.chown(Puppet[:user], Puppet[:group], path)
100
- rescue ArgumentError, Errno::EPERM
101
- Puppet.err _("Unable to set ownership to %{user}:%{group} for log file: %{path}") % { user: Puppet[:user], group: Puppet[:group], path: path }
102
- end
103
- end
104
-
105
96
  @file = file
106
97
 
107
98
  @autoflush = Puppet[:autoflush]
@@ -48,11 +48,12 @@ module Logging
48
48
  # wish to log a message at all; in this case it is likely that you are only calling this method in order
49
49
  # to take advantage of the backtrace logging.
50
50
  def log_exception(exception, message = :default, options = {})
51
- trace = Puppet[:trace] || options[:trace]
51
+ combined_trace = Puppet[:trace] || options[:trace]
52
+ puppet_trace = Puppet[:puppet_trace] || options[:puppet_trace]
53
+
52
54
  if message == :default && exception.is_a?(Puppet::ParseErrorWithIssue)
53
55
  # Retain all detailed info and keep plain message and stacktrace separate
54
- backtrace = []
55
- build_exception_trace(backtrace, exception, trace)
56
+ backtrace = build_exception_trace(exception, combined_trace, puppet_trace)
56
57
  Puppet::Util::Log.create({
57
58
  :level => options[:level] || :err,
58
59
  :source => log_source,
@@ -66,28 +67,27 @@ module Logging
66
67
  :node => exception.node
67
68
  }.merge(log_metadata))
68
69
  else
69
- err(format_exception(exception, message, trace))
70
+ err(format_exception(exception, message, combined_trace, puppet_trace))
70
71
  end
71
72
  end
72
73
 
73
- def build_exception_trace(arr, exception, trace = true)
74
- if trace and exception.backtrace
75
- exception.backtrace.each do |line|
76
- arr << line =~ /^(.+):(\d+.*)$/ ? ("#{Pathname($1).realpath}:#{$2}" rescue line) : line
77
- end
78
- end
74
+ def build_exception_trace(exception, combined_trace = true, puppet_trace = false)
75
+ built_trace = format_backtrace(exception, combined_trace, puppet_trace)
76
+
79
77
  if exception.respond_to?(:original)
80
78
  original = exception.original
81
79
  unless original.nil?
82
- arr << _('Wrapped exception:')
83
- arr << original.message
84
- build_exception_trace(arr, original, trace)
80
+ built_trace << _('Wrapped exception:')
81
+ built_trace << original.message
82
+ built_trace += build_exception_trace(original, combined_trace, puppet_trace)
85
83
  end
86
84
  end
85
+
86
+ built_trace
87
87
  end
88
88
  private :build_exception_trace
89
89
 
90
- def format_exception(exception, message = :default, trace = true)
90
+ def format_exception(exception, message = :default, combined_trace = true, puppet_trace = false)
91
91
  arr = []
92
92
  case message
93
93
  when :default
@@ -98,16 +98,28 @@ module Logging
98
98
  arr << message
99
99
  end
100
100
 
101
- if trace and exception.backtrace
102
- arr << Puppet::Util.pretty_backtrace(exception.backtrace)
103
- end
101
+ arr += format_backtrace(exception, combined_trace, puppet_trace)
102
+
104
103
  if exception.respond_to?(:original) and exception.original
105
104
  arr << _("Wrapped exception:")
106
- arr << format_exception(exception.original, :default, trace)
105
+ arr << format_exception(exception.original, :default, combined_trace, puppet_trace)
107
106
  end
107
+
108
108
  arr.flatten.join("\n")
109
109
  end
110
110
 
111
+ def format_backtrace(exception, combined_trace, puppet_trace)
112
+ puppetstack = exception.respond_to?(:puppetstack) ? exception.puppetstack : []
113
+
114
+ if combined_trace and exception.backtrace
115
+ Puppet::Util.format_backtrace_array(exception.backtrace, puppetstack)
116
+ elsif puppet_trace && !puppetstack.empty?
117
+ Puppet::Util.format_backtrace_array(puppetstack)
118
+ else
119
+ []
120
+ end
121
+ end
122
+
111
123
  def log_and_raise(exception, message)
112
124
  log_exception(exception, message)
113
125
  raise exception, message + "\n" + exception.to_s, exception.backtrace