puppet 6.23.0 → 6.26.0

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 (397) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +5 -5
  3. data/Gemfile +4 -4
  4. data/Gemfile.lock +32 -25
  5. data/README.md +4 -4
  6. data/{ext → examples/enc}/regexp_nodes/classes/databases +0 -0
  7. data/{ext → examples/enc}/regexp_nodes/classes/webservers +0 -0
  8. data/{ext → examples/enc}/regexp_nodes/environment/development +0 -0
  9. data/{ext → examples/enc}/regexp_nodes/parameters/service/prod +0 -0
  10. data/{ext → examples/enc}/regexp_nodes/parameters/service/qa +0 -0
  11. data/{ext → examples/enc}/regexp_nodes/parameters/service/sandbox +0 -0
  12. data/{ext → examples/enc}/regexp_nodes/regexp_nodes.rb +0 -0
  13. data/{ext → examples}/nagios/check_puppet.rb +2 -2
  14. data/ext/README.md +13 -0
  15. data/ext/project_data.yaml +1 -0
  16. data/lib/puppet/application/agent.rb +4 -0
  17. data/lib/puppet/application/apply.rb +20 -2
  18. data/lib/puppet/application/filebucket.rb +1 -0
  19. data/lib/puppet/application/lookup.rb +78 -24
  20. data/lib/puppet/application/resource.rb +30 -15
  21. data/lib/puppet/application/ssl.rb +1 -0
  22. data/lib/puppet/concurrent/thread_local_singleton.rb +6 -3
  23. data/lib/puppet/configurer.rb +134 -56
  24. data/lib/puppet/confine/variable.rb +1 -1
  25. data/lib/puppet/defaults.rb +55 -32
  26. data/lib/puppet/environments.rb +75 -25
  27. data/lib/puppet/face/facts.rb +1 -1
  28. data/lib/puppet/face/generate.rb +2 -0
  29. data/lib/puppet/face/help/action.erb +1 -0
  30. data/lib/puppet/face/help/face.erb +1 -0
  31. data/lib/puppet/face/node/clean.rb +11 -0
  32. data/lib/puppet/facter_impl.rb +96 -0
  33. data/lib/puppet/file_serving/configuration/parser.rb +2 -0
  34. data/lib/puppet/file_serving/configuration.rb +3 -0
  35. data/lib/puppet/file_serving/metadata.rb +3 -0
  36. data/lib/puppet/file_serving/mount/file.rb +4 -4
  37. data/lib/puppet/file_serving/mount/scripts.rb +24 -0
  38. data/lib/puppet/file_system/file_impl.rb +10 -8
  39. data/lib/puppet/file_system/jruby.rb +1 -1
  40. data/lib/puppet/file_system/windows.rb +6 -6
  41. data/lib/puppet/file_system.rb +1 -1
  42. data/lib/puppet/forge.rb +4 -4
  43. data/lib/puppet/functions/empty.rb +8 -0
  44. data/lib/puppet/functions/find_template.rb +2 -2
  45. data/lib/puppet/functions/strftime.rb +1 -0
  46. data/lib/puppet/functions/unwrap.rb +17 -2
  47. data/lib/puppet/functions/versioncmp.rb +6 -2
  48. data/lib/puppet/generate/type.rb +9 -0
  49. data/lib/puppet/http/client.rb +1 -1
  50. data/lib/puppet/http/redirector.rb +5 -0
  51. data/lib/puppet/http/service/compiler.rb +6 -1
  52. data/lib/puppet/indirector/catalog/compiler.rb +24 -6
  53. data/lib/puppet/indirector/catalog/rest.rb +1 -0
  54. data/lib/puppet/indirector/facts/facter.rb +6 -6
  55. data/lib/puppet/indirector/indirection.rb +1 -1
  56. data/lib/puppet/indirector/resource/ral.rb +6 -1
  57. data/lib/puppet/indirector/terminus.rb +4 -0
  58. data/lib/puppet/interface/documentation.rb +1 -0
  59. data/lib/puppet/module/plan.rb +0 -1
  60. data/lib/puppet/module/task.rb +1 -1
  61. data/lib/puppet/module.rb +1 -0
  62. data/lib/puppet/module_tool/applications/installer.rb +12 -4
  63. data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
  64. data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
  65. data/lib/puppet/module_tool/errors/shared.rb +17 -0
  66. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  67. data/lib/puppet/node/environment.rb +10 -11
  68. data/lib/puppet/node.rb +1 -1
  69. data/lib/puppet/pal/pal_impl.rb +1 -1
  70. data/lib/puppet/parser/resource.rb +1 -1
  71. data/lib/puppet/parser/scope.rb +1 -0
  72. data/lib/puppet/parser/templatewrapper.rb +1 -0
  73. data/lib/puppet/pops/evaluator/closure.rb +7 -5
  74. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +1 -0
  75. data/lib/puppet/pops/lookup/lookup_adapter.rb +3 -2
  76. data/lib/puppet/pops/model/ast.rb +1 -0
  77. data/lib/puppet/pops/model/factory.rb +2 -1
  78. data/lib/puppet/pops/parser/code_merger.rb +4 -4
  79. data/lib/puppet/pops/parser/egrammar.ra +2 -0
  80. data/lib/puppet/pops/parser/eparser.rb +1014 -995
  81. data/lib/puppet/pops/parser/lexer2.rb +92 -91
  82. data/lib/puppet/pops/parser/slurp_support.rb +1 -0
  83. data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
  84. data/lib/puppet/pops/types/type_formatter.rb +4 -3
  85. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  86. data/lib/puppet/pops/types/types.rb +1 -1
  87. data/lib/puppet/provider/aix_object.rb +1 -1
  88. data/lib/puppet/provider/exec/posix.rb +16 -4
  89. data/lib/puppet/provider/group/groupadd.rb +5 -2
  90. data/lib/puppet/provider/package/pip.rb +15 -3
  91. data/lib/puppet/provider/package/pkg.rb +19 -2
  92. data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
  93. data/lib/puppet/provider/package/yum.rb +1 -1
  94. data/lib/puppet/provider/parsedfile.rb +3 -0
  95. data/lib/puppet/provider/service/base.rb +1 -1
  96. data/lib/puppet/provider/service/init.rb +10 -9
  97. data/lib/puppet/provider/service/launchd.rb +2 -2
  98. data/lib/puppet/provider/service/redhat.rb +1 -1
  99. data/lib/puppet/provider/service/smf.rb +3 -3
  100. data/lib/puppet/provider/service/systemd.rb +2 -2
  101. data/lib/puppet/provider/service/upstart.rb +5 -5
  102. data/lib/puppet/provider/user/aix.rb +44 -1
  103. data/lib/puppet/provider/user/directoryservice.rb +1 -1
  104. data/lib/puppet/provider/user/useradd.rb +72 -16
  105. data/lib/puppet/provider.rb +1 -1
  106. data/lib/puppet/reference/providers.rb +2 -2
  107. data/lib/puppet/resource/catalog.rb +1 -1
  108. data/lib/puppet/resource/type_collection.rb +1 -0
  109. data/lib/puppet/resource.rb +38 -5
  110. data/lib/puppet/runtime.rb +11 -1
  111. data/lib/puppet/settings.rb +32 -9
  112. data/lib/puppet/ssl/verifier.rb +6 -0
  113. data/lib/puppet/test/test_helper.rb +4 -1
  114. data/lib/puppet/transaction/persistence.rb +21 -1
  115. data/lib/puppet/transaction/report.rb +15 -1
  116. data/lib/puppet/type/exec.rb +35 -5
  117. data/lib/puppet/type/file/data_sync.rb +1 -1
  118. data/lib/puppet/type/file/mode.rb +6 -0
  119. data/lib/puppet/type/file.rb +6 -6
  120. data/lib/puppet/type/filebucket.rb +3 -3
  121. data/lib/puppet/type/group.rb +0 -1
  122. data/lib/puppet/type/resources.rb +1 -1
  123. data/lib/puppet/type/service.rb +8 -3
  124. data/lib/puppet/type/tidy.rb +1 -1
  125. data/lib/puppet/type/user.rb +40 -39
  126. data/lib/puppet/type.rb +1 -1
  127. data/lib/puppet/util/command_line.rb +1 -1
  128. data/lib/puppet/util/filetype.rb +2 -2
  129. data/lib/puppet/util/json.rb +20 -0
  130. data/lib/puppet/util/log.rb +8 -4
  131. data/lib/puppet/util/logging.rb +1 -25
  132. data/lib/puppet/util/monkey_patches.rb +6 -0
  133. data/lib/puppet/util/package.rb +25 -16
  134. data/lib/puppet/util/pidlock.rb +1 -1
  135. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
  136. data/lib/puppet/util/suidmanager.rb +1 -2
  137. data/lib/puppet/util/symbolic_file_mode.rb +29 -17
  138. data/lib/puppet/util/tagging.rb +1 -0
  139. data/lib/puppet/util/windows/service.rb +0 -5
  140. data/lib/puppet/util/windows/sid.rb +3 -1
  141. data/lib/puppet/util/windows/user.rb +0 -2
  142. data/lib/puppet/util/windows.rb +3 -0
  143. data/lib/puppet/util/yaml.rb +21 -2
  144. data/lib/puppet/util.rb +4 -3
  145. data/lib/puppet/version.rb +1 -1
  146. data/lib/puppet.rb +6 -9
  147. data/locales/puppet.pot +5 -10418
  148. data/man/man5/puppet.conf.5 +52 -25
  149. data/man/man8/puppet-agent.8 +4 -1
  150. data/man/man8/puppet-apply.8 +1 -1
  151. data/man/man8/puppet-catalog.8 +9 -9
  152. data/man/man8/puppet-config.8 +1 -1
  153. data/man/man8/puppet-describe.8 +1 -1
  154. data/man/man8/puppet-device.8 +1 -1
  155. data/man/man8/puppet-doc.8 +1 -1
  156. data/man/man8/puppet-epp.8 +1 -1
  157. data/man/man8/puppet-facts.8 +8 -8
  158. data/man/man8/puppet-filebucket.8 +1 -1
  159. data/man/man8/puppet-generate.8 +1 -1
  160. data/man/man8/puppet-help.8 +1 -1
  161. data/man/man8/puppet-key.8 +7 -7
  162. data/man/man8/puppet-lookup.8 +9 -6
  163. data/man/man8/puppet-man.8 +1 -1
  164. data/man/man8/puppet-module.8 +3 -3
  165. data/man/man8/puppet-node.8 +5 -5
  166. data/man/man8/puppet-parser.8 +1 -1
  167. data/man/man8/puppet-plugin.8 +1 -1
  168. data/man/man8/puppet-report.8 +5 -5
  169. data/man/man8/puppet-resource.8 +1 -1
  170. data/man/man8/puppet-script.8 +1 -1
  171. data/man/man8/puppet-ssl.8 +1 -1
  172. data/man/man8/puppet-status.8 +4 -4
  173. data/man/man8/puppet.8 +2 -2
  174. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +2 -1
  175. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +3 -0
  176. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +4 -0
  177. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +3 -0
  178. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +8 -0
  179. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +25 -0
  180. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +19 -0
  181. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +20 -0
  182. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +8 -0
  183. data/spec/fixtures/ssl/127.0.0.1-key.pem +106 -106
  184. data/spec/fixtures/ssl/127.0.0.1.pem +48 -48
  185. data/spec/fixtures/ssl/bad-basic-constraints.pem +54 -54
  186. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +51 -51
  187. data/spec/fixtures/ssl/ca.pem +52 -52
  188. data/spec/fixtures/ssl/crl.pem +25 -25
  189. data/spec/fixtures/ssl/ec-key.pem +11 -11
  190. data/spec/fixtures/ssl/ec.pem +32 -32
  191. data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
  192. data/spec/fixtures/ssl/encrypted-key.pem +107 -107
  193. data/spec/fixtures/ssl/intermediate-agent-crl.pem +25 -25
  194. data/spec/fixtures/ssl/intermediate-agent.pem +54 -54
  195. data/spec/fixtures/ssl/intermediate-crl.pem +28 -28
  196. data/spec/fixtures/ssl/intermediate.pem +51 -51
  197. data/spec/fixtures/ssl/oid-key.pem +117 -0
  198. data/spec/fixtures/ssl/oid.pem +69 -0
  199. data/spec/fixtures/ssl/pluto-key.pem +106 -106
  200. data/spec/fixtures/ssl/pluto.pem +50 -50
  201. data/spec/fixtures/ssl/request-key.pem +106 -106
  202. data/spec/fixtures/ssl/request.pem +45 -45
  203. data/spec/fixtures/ssl/revoked-key.pem +106 -106
  204. data/spec/fixtures/ssl/revoked.pem +49 -49
  205. data/spec/fixtures/ssl/signed-key.pem +106 -106
  206. data/spec/fixtures/ssl/signed.pem +47 -47
  207. data/spec/fixtures/ssl/tampered-cert.pem +49 -49
  208. data/spec/fixtures/ssl/tampered-csr.pem +45 -45
  209. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +5 -0
  210. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +106 -106
  211. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -48
  212. data/spec/fixtures/ssl/unknown-ca-key.pem +106 -106
  213. data/spec/fixtures/ssl/unknown-ca.pem +52 -52
  214. data/spec/fixtures/unit/forge/bacula.json +1 -1
  215. data/spec/integration/application/agent_spec.rb +141 -37
  216. data/spec/integration/application/filebucket_spec.rb +16 -0
  217. data/spec/integration/application/lookup_spec.rb +32 -6
  218. data/spec/integration/application/module_spec.rb +21 -0
  219. data/spec/integration/application/resource_spec.rb +35 -1
  220. data/spec/integration/application/ssl_spec.rb +20 -0
  221. data/spec/integration/configurer_spec.rb +18 -2
  222. data/spec/integration/environments/settings_interpolation_spec.rb +0 -4
  223. data/spec/integration/indirector/facts/facter_spec.rb +93 -39
  224. data/spec/integration/l10n/compiler_spec.rb +37 -0
  225. data/spec/integration/parser/pcore_resource_spec.rb +10 -0
  226. data/spec/integration/transaction/report_spec.rb +1 -1
  227. data/spec/integration/type/exec_spec.rb +70 -45
  228. data/spec/integration/type/file_spec.rb +2 -2
  229. data/spec/integration/type/package_spec.rb +6 -6
  230. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  231. data/spec/integration/util/windows/process_spec.rb +1 -9
  232. data/spec/lib/puppet/test_ca.rb +5 -0
  233. data/spec/lib/puppet_spec/modules.rb +13 -2
  234. data/spec/lib/puppet_spec/puppetserver.rb +15 -0
  235. data/spec/lib/puppet_spec/settings.rb +1 -0
  236. data/spec/shared_behaviours/documentation_on_faces.rb +0 -2
  237. data/spec/shared_contexts/l10n.rb +32 -0
  238. data/spec/spec_helper.rb +1 -10
  239. data/spec/unit/application/apply_spec.rb +76 -56
  240. data/spec/unit/application/lookup_spec.rb +131 -10
  241. data/spec/unit/application/resource_spec.rb +29 -0
  242. data/spec/unit/concurrent/thread_local_singleton_spec.rb +39 -0
  243. data/spec/unit/configurer_spec.rb +265 -57
  244. data/spec/unit/defaults_spec.rb +1 -0
  245. data/spec/unit/environments_spec.rb +184 -0
  246. data/spec/unit/face/generate_spec.rb +64 -0
  247. data/spec/unit/facter_impl_spec.rb +31 -0
  248. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  249. data/spec/unit/file_serving/configuration/parser_spec.rb +23 -0
  250. data/spec/unit/file_serving/configuration_spec.rb +14 -4
  251. data/spec/unit/file_serving/mount/scripts_spec.rb +69 -0
  252. data/spec/unit/file_system_spec.rb +47 -4
  253. data/spec/unit/forge/module_release_spec.rb +3 -3
  254. data/spec/unit/functions/assert_type_spec.rb +1 -1
  255. data/spec/unit/functions/empty_spec.rb +10 -0
  256. data/spec/unit/functions/logging_spec.rb +1 -0
  257. data/spec/unit/functions/lookup_spec.rb +64 -0
  258. data/spec/unit/functions/unwrap_spec.rb +8 -0
  259. data/spec/unit/functions/versioncmp_spec.rb +40 -4
  260. data/spec/unit/functions4_spec.rb +2 -2
  261. data/spec/unit/http/client_spec.rb +58 -1
  262. data/spec/unit/http/service/compiler_spec.rb +8 -0
  263. data/spec/unit/indirector/catalog/compiler_spec.rb +87 -0
  264. data/spec/unit/indirector/catalog/rest_spec.rb +8 -0
  265. data/spec/unit/indirector/indirection_spec.rb +10 -3
  266. data/spec/unit/indirector/resource/ral_spec.rb +40 -75
  267. data/spec/unit/interface/action_spec.rb +0 -9
  268. data/spec/unit/module_spec.rb +15 -1
  269. data/spec/unit/module_tool/applications/installer_spec.rb +51 -12
  270. data/spec/unit/network/authstore_spec.rb +0 -15
  271. data/spec/unit/network/formats_spec.rb +6 -0
  272. data/spec/unit/node_spec.rb +6 -0
  273. data/spec/unit/parser/templatewrapper_spec.rb +12 -2
  274. data/spec/unit/pops/parser/parse_containers_spec.rb +2 -13
  275. data/spec/unit/pops/serialization/to_stringified_spec.rb +5 -0
  276. data/spec/unit/pops/types/type_calculator_spec.rb +6 -0
  277. data/spec/unit/pops/validator/validator_spec.rb +5 -0
  278. data/spec/unit/provider/package/gem_spec.rb +1 -1
  279. data/spec/unit/provider/package/pip2_spec.rb +1 -1
  280. data/spec/unit/provider/package/pip3_spec.rb +1 -1
  281. data/spec/unit/provider/package/pip_spec.rb +38 -1
  282. data/spec/unit/provider/package/pkg_spec.rb +29 -4
  283. data/spec/unit/provider/package/puppet_gem_spec.rb +1 -1
  284. data/spec/unit/provider/package/puppetserver_gem_spec.rb +1 -1
  285. data/spec/unit/provider/parsedfile_spec.rb +10 -0
  286. data/spec/unit/provider/service/gentoo_spec.rb +6 -5
  287. data/spec/unit/provider/service/init_spec.rb +15 -9
  288. data/spec/unit/provider/service/launchd_spec.rb +11 -0
  289. data/spec/unit/provider/service/openwrt_spec.rb +21 -29
  290. data/spec/unit/provider/service/redhat_spec.rb +3 -2
  291. data/spec/unit/provider/service/systemd_spec.rb +1 -1
  292. data/spec/unit/provider/user/aix_spec.rb +100 -0
  293. data/spec/unit/provider/user/directoryservice_spec.rb +1 -1
  294. data/spec/unit/provider/user/useradd_spec.rb +43 -2
  295. data/spec/unit/provider_spec.rb +4 -4
  296. data/spec/unit/puppet_spec.rb +12 -4
  297. data/spec/unit/resource/catalog_spec.rb +14 -1
  298. data/spec/unit/resource_spec.rb +58 -2
  299. data/spec/unit/settings_spec.rb +97 -56
  300. data/spec/unit/ssl/certificate_request_spec.rb +8 -14
  301. data/spec/unit/transaction/persistence_spec.rb +51 -0
  302. data/spec/unit/type/exec_spec.rb +76 -29
  303. data/spec/unit/type/file/source_spec.rb +4 -4
  304. data/spec/unit/type/service_spec.rb +27 -0
  305. data/spec/unit/type/tidy_spec.rb +7 -0
  306. data/spec/unit/type/user_spec.rb +0 -45
  307. data/spec/unit/type_spec.rb +2 -2
  308. data/spec/unit/util/json_spec.rb +126 -0
  309. data/spec/unit/util/logging_spec.rb +2 -0
  310. data/spec/unit/util/windows/sid_spec.rb +39 -4
  311. data/spec/unit/util/yaml_spec.rb +54 -29
  312. data/tasks/generate_cert_fixtures.rake +10 -1
  313. data/tasks/parallel.rake +3 -3
  314. metadata +52 -96
  315. data/ext/README.environment +0 -8
  316. data/ext/dbfix.sql +0 -132
  317. data/ext/debian/README.Debian +0 -8
  318. data/ext/debian/README.source +0 -2
  319. data/ext/debian/TODO.Debian +0 -1
  320. data/ext/debian/changelog.erb +0 -1122
  321. data/ext/debian/compat +0 -1
  322. data/ext/debian/control +0 -144
  323. data/ext/debian/copyright +0 -339
  324. data/ext/debian/docs +0 -1
  325. data/ext/debian/fileserver.conf +0 -41
  326. data/ext/debian/puppet-common.dirs +0 -13
  327. data/ext/debian/puppet-common.install +0 -3
  328. data/ext/debian/puppet-common.lintian-overrides +0 -5
  329. data/ext/debian/puppet-common.manpages +0 -28
  330. data/ext/debian/puppet-common.postinst +0 -35
  331. data/ext/debian/puppet-common.postrm +0 -33
  332. data/ext/debian/puppet-el.dirs +0 -1
  333. data/ext/debian/puppet-el.emacsen-install +0 -25
  334. data/ext/debian/puppet-el.emacsen-remove +0 -11
  335. data/ext/debian/puppet-el.emacsen-startup +0 -9
  336. data/ext/debian/puppet-el.install +0 -1
  337. data/ext/debian/puppet-testsuite.install +0 -2
  338. data/ext/debian/puppet-testsuite.lintian-overrides +0 -4
  339. data/ext/debian/puppet.lintian-overrides +0 -3
  340. data/ext/debian/puppet.logrotate +0 -20
  341. data/ext/debian/puppet.postinst +0 -20
  342. data/ext/debian/puppet.postrm +0 -20
  343. data/ext/debian/puppet.preinst +0 -20
  344. data/ext/debian/puppetmaster-common.install +0 -2
  345. data/ext/debian/puppetmaster-common.manpages +0 -2
  346. data/ext/debian/puppetmaster-common.postinst +0 -6
  347. data/ext/debian/puppetmaster-passenger.dirs +0 -4
  348. data/ext/debian/puppetmaster-passenger.postinst +0 -162
  349. data/ext/debian/puppetmaster-passenger.postrm +0 -61
  350. data/ext/debian/puppetmaster.README.debian +0 -17
  351. data/ext/debian/puppetmaster.default +0 -14
  352. data/ext/debian/puppetmaster.init +0 -137
  353. data/ext/debian/puppetmaster.lintian-overrides +0 -3
  354. data/ext/debian/puppetmaster.postinst +0 -20
  355. data/ext/debian/puppetmaster.postrm +0 -5
  356. data/ext/debian/puppetmaster.preinst +0 -22
  357. data/ext/debian/rules +0 -132
  358. data/ext/debian/source/format +0 -1
  359. data/ext/debian/source/options +0 -1
  360. data/ext/debian/vim-puppet.README.Debian +0 -13
  361. data/ext/debian/vim-puppet.dirs +0 -5
  362. data/ext/debian/vim-puppet.yaml +0 -7
  363. data/ext/debian/watch +0 -2
  364. data/ext/freebsd/puppetd +0 -26
  365. data/ext/freebsd/puppetmasterd +0 -26
  366. data/ext/gentoo/conf.d/puppet +0 -5
  367. data/ext/gentoo/conf.d/puppetmaster +0 -12
  368. data/ext/gentoo/init.d/puppet +0 -38
  369. data/ext/gentoo/init.d/puppetmaster +0 -51
  370. data/ext/gentoo/puppet/fileserver.conf +0 -41
  371. data/ext/ips/puppet-agent +0 -44
  372. data/ext/ips/puppet-master +0 -44
  373. data/ext/ips/puppet.p5m.erb +0 -12
  374. data/ext/ips/puppetagent.xml +0 -42
  375. data/ext/ips/puppetmaster.xml +0 -42
  376. data/ext/ips/rules +0 -19
  377. data/ext/ips/transforms +0 -34
  378. data/ext/ldap/puppet.schema +0 -24
  379. data/ext/logcheck/puppet +0 -23
  380. data/ext/osx/file_mapping.yaml +0 -33
  381. data/ext/osx/postflight.erb +0 -109
  382. data/ext/osx/preflight.erb +0 -52
  383. data/ext/osx/prototype.plist.erb +0 -38
  384. data/ext/redhat/fileserver.conf +0 -41
  385. data/ext/redhat/logrotate +0 -21
  386. data/ext/redhat/puppet.spec.erb +0 -842
  387. data/ext/redhat/server.init +0 -128
  388. data/ext/redhat/server.sysconfig +0 -13
  389. data/ext/solaris/pkginfo +0 -6
  390. data/ext/solaris/smf/puppetd.xml +0 -77
  391. data/ext/solaris/smf/puppetmasterd.xml +0 -77
  392. data/ext/solaris/smf/svc-puppetd +0 -71
  393. data/ext/solaris/smf/svc-puppetmasterd +0 -67
  394. data/ext/suse/puppet.spec +0 -310
  395. data/ext/suse/server.init +0 -173
  396. data/ext/yaml_nodes.rb +0 -105
  397. data/spec/unit/indirector/store_configs_spec.rb +0 -7
@@ -48,6 +48,13 @@ module Puppet::Environments
48
48
  root.instance_variable_set(:@rich_data, nil)
49
49
  end
50
50
  end
51
+
52
+ # The base implementation is a noop, because `get` returns a new environment
53
+ # each time.
54
+ #
55
+ # @see Puppet::Environments::Cached#guard
56
+ def guard(name); end
57
+ def unguard(name); end
51
58
  end
52
59
 
53
60
  # @!macro [new] loader_search_paths
@@ -188,7 +195,7 @@ module Puppet::Environments
188
195
 
189
196
  def self.real_path(dir)
190
197
  if Puppet::FileSystem.symlink?(dir) && Puppet[:versioned_environment_dirs]
191
- dir = Puppet::FileSystem.expand_path(Puppet::FileSystem.readlink(dir))
198
+ dir = Pathname.new Puppet::FileSystem.expand_path(Puppet::FileSystem.readlink(dir))
192
199
  end
193
200
  return dir
194
201
  end
@@ -241,7 +248,7 @@ module Puppet::Environments
241
248
 
242
249
  def validated_directory(envdir)
243
250
  env_name = Puppet::FileSystem.basename_string(envdir)
244
- envdir = Puppet::Environments::Directories.real_path(envdir)
251
+ envdir = Puppet::Environments::Directories.real_path(envdir).to_s
245
252
  if Puppet::FileSystem.directory?(envdir) && Puppet::Node::Environment.valid_name?(env_name)
246
253
  envdir
247
254
  else
@@ -330,21 +337,13 @@ module Puppet::Environments
330
337
  end
331
338
 
332
339
  def self.cache_expiration_service=(service)
333
- @cache_expiration_service = service
340
+ @cache_expiration_service_singleton = service
334
341
  end
335
342
 
336
343
  def self.cache_expiration_service
337
- @cache_expiration_service || DefaultCacheExpirationService.new
338
- end
339
-
340
- # Returns the end of time (the next Mesoamerican Long Count cycle-end after 2012 (5125+2012) = 7137
341
- def self.end_of_time
342
- Time.gm(7137)
344
+ @cache_expiration_service_singleton || DefaultCacheExpirationService.new
343
345
  end
344
346
 
345
- END_OF_TIME = end_of_time
346
- START_OF_TIME = Time.gm(1)
347
-
348
347
  def initialize(loader)
349
348
  @loader = loader
350
349
  @cache_expiration_service = Puppet::Environments::Cached.cache_expiration_service
@@ -356,6 +355,16 @@ module Puppet::Environments
356
355
  # Evict all that have expired, in the same way as `get`
357
356
  clear_all_expired
358
357
 
358
+ # Evict all that was removed from disk
359
+ cached_envs = @cache.keys.map!(&:to_sym)
360
+ loader_envs = @loader.list.map!(&:name)
361
+ removed_envs = cached_envs - loader_envs
362
+
363
+ removed_envs.each do |env_name|
364
+ Puppet.debug { "Environment no longer exists '#{env_name}'"}
365
+ clear(env_name)
366
+ end
367
+
359
368
  @loader.list.map do |env|
360
369
  name = env.name
361
370
  old_entry = @cache[name]
@@ -375,27 +384,35 @@ module Puppet::Environments
375
384
 
376
385
  # @!macro loader_get
377
386
  def get(name)
387
+ entry = get_entry(name)
388
+ entry ? entry.value : nil
389
+ end
390
+
391
+ # Get a cache entry for an envionment. It returns nil if the
392
+ # environment doesn't exist.
393
+ def get_entry(name, check_expired = true)
378
394
  # Aggressively evict all that has expired
379
395
  # This strategy favors smaller memory footprint over environment
380
396
  # retrieval time.
381
- clear_all_expired
382
- result = @cache[name]
383
- if result
384
- Puppet.debug {"Found in cache '#{name}' #{result.label}"}
397
+ clear_all_expired if check_expired
398
+ name = name.to_sym
399
+ entry = @cache[name]
400
+ if entry
401
+ Puppet.debug {"Found in cache #{name.inspect} #{entry.label}"}
385
402
  # found in cache
386
- result.touch
387
- return result.value
388
- elsif (result = @loader.get(name))
403
+ entry.touch
404
+ elsif (env = @loader.get(name))
389
405
  # environment loaded, cache it
390
- cache_entry = entry(result)
391
- add_entry(name, cache_entry)
392
- result
406
+ entry = entry(env)
407
+ add_entry(name, entry)
393
408
  end
409
+ entry
394
410
  end
411
+ private :get_entry
395
412
 
396
413
  # Adds a cache entry to the cache
397
414
  def add_entry(name, cache_entry)
398
- Puppet.debug {"Caching environment '#{name}' #{cache_entry.label}"}
415
+ Puppet.debug {"Caching environment #{name.inspect} #{cache_entry.label}"}
399
416
  @cache[name] = cache_entry
400
417
  @cache_expiration_service.created(cache_entry.value)
401
418
  end
@@ -403,7 +420,7 @@ module Puppet::Environments
403
420
 
404
421
  def clear_entry(name, entry)
405
422
  @cache.delete(name)
406
- Puppet.debug {"Evicting cache entry for environment '#{name}'"}
423
+ Puppet.debug {"Evicting cache entry for environment #{name.inspect}"}
407
424
  @cache_expiration_service.evicted(name.to_sym)
408
425
  Puppet::GettextConfig.delete_text_domain(name)
409
426
  Puppet.settings.clear_environment_settings(name)
@@ -413,6 +430,7 @@ module Puppet::Environments
413
430
  # Clears the cache of the environment with the given name.
414
431
  # (The intention is that this could be used from a MANUAL cache eviction command (TBD)
415
432
  def clear(name)
433
+ name = name.to_sym
416
434
  entry = @cache[name]
417
435
  clear_entry(name, entry) if entry
418
436
  end
@@ -433,19 +451,21 @@ module Puppet::Environments
433
451
  # Clears all environments that have expired, either by exceeding their time to live, or
434
452
  # through an explicit eviction determined by the cache expiration service.
435
453
  #
436
- def clear_all_expired()
454
+ def clear_all_expired
437
455
  t = Time.now
438
456
 
439
457
  @cache.each_pair do |name, entry|
440
458
  clear_if_expired(name, entry, t)
441
459
  end
442
460
  end
461
+ private :clear_all_expired
443
462
 
444
463
  # Clear an environment if it is expired, either by exceeding its time to live, or
445
464
  # through an explicit eviction determined by the cache expiration service.
446
465
  #
447
466
  def clear_if_expired(name, entry, t = Time.now)
448
467
  return unless entry
468
+ return if entry.guarded?
449
469
 
450
470
  if entry.expired?(t) || @cache_expiration_service.expired?(name.to_sym)
451
471
  clear_entry(name, entry)
@@ -462,10 +482,25 @@ module Puppet::Environments
462
482
  #
463
483
  # @!macro loader_get_conf
464
484
  def get_conf(name)
485
+ name = name.to_sym
465
486
  clear_if_expired(name, @cache[name])
466
487
  @loader.get_conf(name)
467
488
  end
468
489
 
490
+ # Guard an environment so it can't be evicted while it's in use. The method
491
+ # may be called multiple times, provided it is unguarded the same number of
492
+ # times. If you call this method, you must call `unguard` in an ensure block.
493
+ def guard(name)
494
+ entry = get_entry(name, false)
495
+ entry.guard if entry
496
+ end
497
+
498
+ # Unguard an environment.
499
+ def unguard(name)
500
+ entry = get_entry(name, false)
501
+ entry.unguard if entry
502
+ end
503
+
469
504
  # Creates a suitable cache entry given the time to live for one environment
470
505
  #
471
506
  def entry(env)
@@ -495,6 +530,7 @@ module Puppet::Environments
495
530
 
496
531
  def initialize(value)
497
532
  @value = value
533
+ @guards = 0
498
534
  end
499
535
 
500
536
  def touch
@@ -507,6 +543,20 @@ module Puppet::Environments
507
543
  def label
508
544
  ""
509
545
  end
546
+
547
+ # These are not protected with a lock, because all of the Cached
548
+ # methods are protected.
549
+ def guarded?
550
+ @guards > 0
551
+ end
552
+
553
+ def guard
554
+ @guards += 1
555
+ end
556
+
557
+ def unguard
558
+ @guards -= 1
559
+ end
510
560
  end
511
561
 
512
562
  # Always evicting entry
@@ -132,7 +132,7 @@ Puppet::Indirector::Face.define(:facts, '0.0.1') do
132
132
  Puppet.settings.preferred_run_mode = :agent
133
133
  Puppet::Node::Facts.indirection.terminus_class = :facter
134
134
 
135
- if Puppet::Util::Package.versioncmp(Facter.value('facterversion'), '4.0.0') < 0
135
+ if Puppet::Util::Package.versioncmp(Puppet.runtime[:facter].value('facterversion'), '4.0.0') < 0
136
136
  cmd_flags = '--render-as json --show-legacy'
137
137
 
138
138
  # puppet/ruby are in PATH since it was updated in the wrapper script
@@ -58,6 +58,8 @@ Puppet::Face.define(:generate, '0.1.0') do
58
58
  Puppet::FileSystem::mkpath(outputdir)
59
59
 
60
60
  generator.generate(inputs, outputdir, options[:force])
61
+
62
+ exit(1) if generator.bad_input?
61
63
  nil
62
64
  end
63
65
  end
@@ -54,6 +54,7 @@ undocumented option
54
54
  end
55
55
  unless action.options.empty?
56
56
  action.options.sort.each do |name|
57
+ next if name == :extra
57
58
  option = action.get_option name -%>
58
59
  <%= " " + option.optparse.join(" | ")[0,(optionroom - 1)].ljust(optionroom) + ' - ' -%>
59
60
  <% if !(option.summary) -%>
@@ -49,6 +49,7 @@ undocumented option
49
49
  end
50
50
  unless face.options.empty?
51
51
  face.options.sort.each do |name|
52
+ next if name == :extra
52
53
  option = face.get_option name -%>
53
54
  <%= " " + option.optparse.join(" | ")[0,(optionroom - 1)].ljust(optionroom) + ' - ' -%>
54
55
  <% if !(option.summary) -%>
@@ -47,6 +47,17 @@ Puppet::Face.define(:node, '0.0.1') do
47
47
  end
48
48
 
49
49
  class LoggerIO
50
+ def debug(message)
51
+ Puppet.debug(message)
52
+ end
53
+
54
+ # Notice: For Puppet 6.x, the function below does not matter as it
55
+ # does not have any functionality. But we decided to keep it here
56
+ # for the ease of merge up to 7.x and having the same code base.
57
+ def warn(message)
58
+ Puppet.warning(message) unless message =~ /cadir is currently configured to be inside/
59
+ end
60
+
50
61
  def err(message)
51
62
  Puppet.err(message) unless message =~ /^\s*Error:\s*/
52
63
  end
@@ -0,0 +1,96 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # @api private
5
+ # Default Facter implementation that delegates to Facter API
6
+ #
7
+
8
+ module Puppet
9
+ class FacterImpl
10
+ def initialize
11
+ require 'facter'
12
+
13
+ setup_logging
14
+ end
15
+
16
+ def value(fact_name)
17
+ ::Facter.value(fact_name)
18
+ end
19
+
20
+ def add(name, &block)
21
+ ::Facter.add(name, &block)
22
+ end
23
+
24
+ def to_hash
25
+ ::Facter.to_hash
26
+ end
27
+
28
+ def clear
29
+ ::Facter.clear
30
+ end
31
+
32
+ def reset
33
+ ::Facter.reset
34
+ end
35
+
36
+ def resolve(options)
37
+ ::Facter.resolve(options)
38
+ end
39
+
40
+ def search_external(dirs)
41
+ ::Facter.search_external(dirs)
42
+ end
43
+
44
+ def search(*dirs)
45
+ ::Facter.search(*dirs)
46
+ end
47
+
48
+ def trace(value)
49
+ ::Facter.trace(value) if ::Facter.respond_to? :trace
50
+ end
51
+
52
+ def debugging(value)
53
+ ::Facter.debugging(value) if ::Facter.respond_to?(:debugging)
54
+ end
55
+
56
+ def load_external?
57
+ ::Facter.respond_to?(:load_external)
58
+ end
59
+
60
+ def load_external(value)
61
+ ::Facter.load_external(value) if self.load_external?
62
+ end
63
+
64
+ private
65
+
66
+ def setup_logging
67
+ return unless ::Facter.respond_to? :on_message
68
+
69
+ ::Facter.on_message do |level, message|
70
+ case level
71
+ when :trace, :debug
72
+ level = :debug
73
+ when :info
74
+ # Same as Puppet
75
+ when :warn
76
+ level = :warning
77
+ when :error
78
+ level = :err
79
+ when :fatal
80
+ level = :crit
81
+ else
82
+ next
83
+ end
84
+
85
+ Puppet::Util::Log.create(
86
+ {
87
+ :level => level,
88
+ :source => 'Facter',
89
+ :message => message
90
+ }
91
+ )
92
+ nil
93
+ end
94
+ end
95
+ end
96
+ end
@@ -104,6 +104,8 @@ class Puppet::FileServing::Configuration::Parser
104
104
  mount = Mount::Modules.new(name)
105
105
  when "plugins"
106
106
  mount = Mount::Plugins.new(name)
107
+ when "scripts"
108
+ mount = Mount::Scripts.new(name)
107
109
  when "tasks"
108
110
  mount = Mount::Tasks.new(name)
109
111
  when "locales"
@@ -6,6 +6,7 @@ require 'puppet/file_serving/mount/modules'
6
6
  require 'puppet/file_serving/mount/plugins'
7
7
  require 'puppet/file_serving/mount/locales'
8
8
  require 'puppet/file_serving/mount/pluginfacts'
9
+ require 'puppet/file_serving/mount/scripts'
9
10
  require 'puppet/file_serving/mount/tasks'
10
11
 
11
12
  class Puppet::FileServing::Configuration
@@ -87,6 +88,8 @@ class Puppet::FileServing::Configuration
87
88
  @mounts["locales"].allow('*') if @mounts["locales"].empty?
88
89
  @mounts["pluginfacts"] ||= Mount::PluginFacts.new("pluginfacts")
89
90
  @mounts["pluginfacts"].allow('*') if @mounts["pluginfacts"].empty?
91
+ @mounts["scripts"] ||= Mount::Scripts.new("scripts")
92
+ @mounts["scripts"].allow('*') if @mounts["scripts"].empty?
90
93
  @mounts["tasks"] ||= Mount::Tasks.new("tasks")
91
94
  @mounts["tasks"].allow('*') if @mounts["tasks"].empty?
92
95
  end
@@ -118,6 +118,9 @@ class Puppet::FileServing::Metadata < Puppet::FileServing::Base
118
118
  when "link"
119
119
  @destination = Puppet::FileSystem.readlink(real_path)
120
120
  @checksum = ("{#{@checksum_type}}") + send("#{@checksum_type}_file", real_path).to_s rescue nil
121
+ when "fifo", "socket"
122
+ @checksum_type = "none"
123
+ @checksum = ("{#{@checksum_type}}") + send("#{@checksum_type}_file", real_path).to_s
121
124
  else
122
125
  raise ArgumentError, _("Cannot manage files of type %{file_type}") % { file_type: stat.ftype }
123
126
  end
@@ -3,12 +3,12 @@ require 'puppet/file_serving/mount'
3
3
  class Puppet::FileServing::Mount::File < Puppet::FileServing::Mount
4
4
  def self.localmap
5
5
  @localmap ||= {
6
- "h" => Facter.value("hostname"),
6
+ "h" => Puppet.runtime[:facter].value("hostname"),
7
7
  "H" => [
8
- Facter.value("hostname"),
9
- Facter.value("domain")
8
+ Puppet.runtime[:facter].value("hostname"),
9
+ Puppet.runtime[:facter].value("domain")
10
10
  ].join("."),
11
- "d" => Facter.value("domain")
11
+ "d" => Puppet.runtime[:facter].value("domain")
12
12
  }
13
13
  end
14
14
 
@@ -0,0 +1,24 @@
1
+ require 'puppet/file_serving/mount'
2
+
3
+ class Puppet::FileServing::Mount::Scripts < Puppet::FileServing::Mount
4
+ # Return an instance of the appropriate class.
5
+ def find(path, request)
6
+ raise _("No module specified") if path.to_s.empty?
7
+ module_name, relative_path = path.split("/", 2)
8
+ mod = request.environment.module(module_name)
9
+ return nil unless mod
10
+
11
+ mod.script(relative_path)
12
+ end
13
+
14
+ def search(path, request)
15
+ result = find(path, request)
16
+ if result
17
+ [result]
18
+ end
19
+ end
20
+
21
+ def valid?
22
+ true
23
+ end
24
+ end
@@ -84,7 +84,9 @@ class Puppet::FileSystem::FileImpl
84
84
  end
85
85
 
86
86
  def read_preserve_line_endings(path)
87
- read(path)
87
+ default_encoding = Encoding.default_external.name
88
+ encoding = default_encoding.downcase.start_with?('utf-') ? "bom|#{default_encoding}" : default_encoding
89
+ read(path, encoding: encoding)
88
90
  end
89
91
 
90
92
  def binread(path)
@@ -128,23 +130,23 @@ class Puppet::FileSystem::FileImpl
128
130
  end
129
131
 
130
132
  def symlink?(path)
131
- File.symlink?(path)
133
+ ::File.symlink?(path)
132
134
  end
133
135
 
134
136
  def readlink(path)
135
- File.readlink(path)
137
+ ::File.readlink(path)
136
138
  end
137
139
 
138
140
  def unlink(*paths)
139
- File.unlink(*paths)
141
+ ::File.unlink(*paths)
140
142
  end
141
143
 
142
144
  def stat(path)
143
- File.stat(path)
145
+ ::File.stat(path)
144
146
  end
145
147
 
146
148
  def lstat(path)
147
- File.lstat(path)
149
+ ::File.lstat(path)
148
150
  end
149
151
 
150
152
  def compare_stream(path, stream)
@@ -157,7 +159,7 @@ class Puppet::FileSystem::FileImpl
157
159
 
158
160
  def replace_file(path, mode = nil)
159
161
  begin
160
- stat = Puppet::FileSystem.lstat(path)
162
+ stat = lstat(path)
161
163
  gid = stat.gid
162
164
  uid = stat.uid
163
165
  mode ||= stat.mode & 07777
@@ -178,7 +180,7 @@ class Puppet::FileSystem::FileImpl
178
180
  tempfile_path = tempfile.path
179
181
  FileUtils.chown(uid, gid, tempfile_path) if uid && gid
180
182
  chmod(mode, tempfile_path)
181
- File.rename(tempfile_path, Puppet::FileSystem.path_string(path))
183
+ ::File.rename(tempfile_path, path_string(path))
182
184
  ensure
183
185
  tempfile.close!
184
186
  end
@@ -14,7 +14,7 @@ class Puppet::FileSystem::JRuby < Puppet::FileSystem::Posix
14
14
  def replace_file(path, mode = nil, &block)
15
15
  # MRI Ruby rename checks if destination is a directory and raises, while
16
16
  # JRuby removes the directory and replaces the file.
17
- if Puppet::FileSystem.directory?(path)
17
+ if directory?(path)
18
18
  raise Errno::EISDIR, _("Is a directory: %{directory}") % { directory: path }
19
19
  end
20
20
 
@@ -109,8 +109,8 @@ class Puppet::FileSystem::Windows < Puppet::FileSystem::Posix
109
109
  end
110
110
 
111
111
  def read_preserve_line_endings(path)
112
- contents = path.read( :mode => 'rb', :encoding => Encoding::UTF_8)
113
- contents = path.read( :mode => 'rb', :encoding => Encoding::default_external) unless contents.valid_encoding?
112
+ contents = path.read( :mode => 'rb', :encoding => 'bom|utf-8')
113
+ contents = path.read( :mode => 'rb', :encoding => "bom|#{Encoding::default_external.name}") unless contents.valid_encoding?
114
114
  contents = path.read unless contents.valid_encoding?
115
115
 
116
116
  contents
@@ -123,7 +123,7 @@ class Puppet::FileSystem::Windows < Puppet::FileSystem::Posix
123
123
  LOCK_VIOLATION = 33
124
124
 
125
125
  def replace_file(path, mode = nil)
126
- if Puppet::FileSystem.directory?(path)
126
+ if directory?(path)
127
127
  raise Errno::EISDIR, _("Is a directory: %{directory}") % { directory: path }
128
128
  end
129
129
 
@@ -159,14 +159,14 @@ class Puppet::FileSystem::Windows < Puppet::FileSystem::Posix
159
159
  end
160
160
 
161
161
  set_dacl(tempfile.path, dacl) if dacl
162
- File.rename(tempfile.path, Puppet::FileSystem.path_string(path))
162
+ ::File.rename(tempfile.path, path_string(path))
163
163
  ensure
164
164
  tempfile.close!
165
165
  end
166
166
  rescue Puppet::Util::Windows::Error => e
167
167
  case e.code
168
168
  when ACCESS_DENIED, SHARING_VIOLATION, LOCK_VIOLATION
169
- raise Errno::EACCES.new(Puppet::FileSystem.path_string(path), e)
169
+ raise Errno::EACCES.new(path_string(path), e)
170
170
  else
171
171
  raise SystemCallError.new(e.message)
172
172
  end
@@ -193,7 +193,7 @@ class Puppet::FileSystem::Windows < Puppet::FileSystem::Posix
193
193
  end
194
194
 
195
195
  def get_dacl_from_file(path)
196
- sd = Puppet::Util::Windows::Security.get_security_descriptor(Puppet::FileSystem.path_string(path))
196
+ sd = Puppet::Util::Windows::Security.get_security_descriptor(path_string(path))
197
197
  sd.dacl
198
198
  rescue Puppet::Util::Windows::Error => e
199
199
  raise e unless e.code == FILE_NOT_FOUND
@@ -396,7 +396,7 @@ module Puppet::FileSystem
396
396
  # @api public
397
397
  #
398
398
  def self.chmod(mode, path)
399
- @impl.chmod(mode, path)
399
+ @impl.chmod(mode, assert_path(path))
400
400
  end
401
401
 
402
402
  # Replace the contents of a file atomically, creating the file if necessary.
data/lib/puppet/forge.rb CHANGED
@@ -70,7 +70,7 @@ class Puppet::Forge < SemanticPuppet::Dependency::Source
70
70
  uri = decode_uri(result['pagination']['next'])
71
71
  matches.concat result['results']
72
72
  else
73
- raise ResponseError.new(:uri => URI.parse(@host).merge(uri), :response => response)
73
+ raise ResponseError.new(:uri => response.url, :response => response)
74
74
  end
75
75
  end
76
76
 
@@ -105,7 +105,7 @@ class Puppet::Forge < SemanticPuppet::Dependency::Source
105
105
  if response.code == 200
106
106
  response = Puppet::Util::Json.load(response.body)
107
107
  else
108
- raise ResponseError.new(:uri => URI.parse(@host).merge(uri), :response => response)
108
+ raise ResponseError.new(:uri => response.url, :response => response)
109
109
  end
110
110
 
111
111
  releases.concat(process(response['results']))
@@ -208,12 +208,12 @@ class Puppet::Forge < SemanticPuppet::Dependency::Source
208
208
  response = @source.make_http_request(uri, destination)
209
209
  destination.flush and destination.close
210
210
  unless response.code == 200
211
- raise Puppet::Forge::Errors::ResponseError.new(:uri => uri, :response => response)
211
+ raise Puppet::Forge::Errors::ResponseError.new(:uri => response.url, :response => response)
212
212
  end
213
213
  end
214
214
 
215
215
  def validate_checksum(file, checksum, digest_class)
216
- if Facter.value(:fips_enabled) && digest_class == Digest::MD5
216
+ if Puppet.runtime[:facter].value(:fips_enabled) && digest_class == Digest::MD5
217
217
  raise _("Module install using MD5 is prohibited in FIPS mode.")
218
218
  end
219
219
 
@@ -26,6 +26,10 @@ Puppet::Functions.create_function(:empty) do
26
26
  param 'Collection', :coll
27
27
  end
28
28
 
29
+ dispatch :sensitive_string_empty do
30
+ param 'Sensitive[String]', :str
31
+ end
32
+
29
33
  dispatch :string_empty do
30
34
  param 'String', :str
31
35
  end
@@ -46,6 +50,10 @@ Puppet::Functions.create_function(:empty) do
46
50
  coll.empty?
47
51
  end
48
52
 
53
+ def sensitive_string_empty(str)
54
+ str.unwrap.empty?
55
+ end
56
+
49
57
  def string_empty(str)
50
58
  str.empty?
51
59
  end
@@ -2,11 +2,11 @@
2
2
  #
3
3
  # This function accepts an argument that is a String as a `<MODULE NAME>/<TEMPLATE>`
4
4
  # reference, which searches for `<TEMPLATE>` relative to a module's `templates`
5
- # directory on the master. (For example, the reference `mymod/secret.conf.epp`
5
+ # directory on the primary server. (For example, the reference `mymod/secret.conf.epp`
6
6
  # will search for the file `<MODULES DIRECTORY>/mymod/templates/secret.conf.epp`.)
7
7
  #
8
8
  # The primary use case is for agent-side template rendering with late-bound variables
9
- # resolved, such as from secret stores inaccessible to the master, such as
9
+ # resolved, such as from secret stores inaccessible to the primary server, such as
10
10
  #
11
11
  # ```
12
12
  # $variables = {
@@ -105,6 +105,7 @@
105
105
  # **Seconds since the Epoch:**
106
106
  #
107
107
  # | Format | Meaning |
108
+ # | ------ | ------- |
108
109
  # | s | Number of seconds since 1970-01-01 00:00:00 UTC. |
109
110
  #
110
111
  # **Literal string:**