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
@@ -103,7 +103,7 @@ module Puppet::ModuleTool
103
103
 
104
104
  contents = data.keys.map do |k|
105
105
  value = (Puppet::Util::Json.dump(data[k], :pretty => true) rescue data[k].to_json)
106
- %Q("#{k.to_s}": #{value})
106
+ %Q("#{k}": #{value})
107
107
  end
108
108
 
109
109
  "{\n" + contents.join(",\n").gsub(/^/, ' ') + "\n}\n"
@@ -8,12 +8,12 @@ module Puppet::ModuleTool::Shared
8
8
  @installed = Hash.new { |h,k| h[k] = [] }
9
9
 
10
10
  @environment.modules_by_path.values.flatten.each do |mod|
11
- mod_name = (mod.forge_name || mod.name).gsub('/', '-')
11
+ mod_name = (mod.forge_name || mod.name).tr('/', '-')
12
12
  @installed[mod_name] << mod
13
13
  d = @local["#{mod_name}@#{mod.version}"]
14
14
  (mod.dependencies || []).each do |hash|
15
15
  name, conditions = hash['name'], hash['version_requirement']
16
- name = name.gsub('/', '-')
16
+ name = name.tr('/', '-')
17
17
  d[name] = conditions
18
18
  @conditions[name] << {
19
19
  :module => mod_name,
@@ -34,7 +34,7 @@ module Puppet::ModuleTool::Shared
34
34
  info = forge.remote_dependency_info(author, modname, @options[:version])
35
35
  info.each do |pair|
36
36
  mod_name, releases = pair
37
- mod_name = mod_name.gsub('/', '-')
37
+ mod_name = mod_name.tr('/', '-')
38
38
  releases.each do |rel|
39
39
  semver = SemanticPuppet::Version.parse(rel['version']) rescue SemanticPuppet::Version::MIN
40
40
  @versions[mod_name] << { :vstring => rel['version'], :semver => semver }
@@ -42,7 +42,7 @@ module Puppet::ModuleTool::Shared
42
42
  @urls["#{mod_name}@#{rel['version']}"] = rel['file']
43
43
  d = @remote["#{mod_name}@#{rel['version']}"]
44
44
  (rel['dependencies'] || []).each do |name, conditions|
45
- d[name.gsub('/', '-')] = conditions
45
+ d[name.tr('/', '-')] = conditions
46
46
  end
47
47
  end
48
48
  end
@@ -1,7 +1,17 @@
1
1
  class Puppet::ModuleTool::Tar::Mini
2
2
  def unpack(sourcefile, destdir, _)
3
3
  Zlib::GzipReader.open(sourcefile) do |reader|
4
- Archive::Tar::Minitar.unpack(reader, destdir, find_valid_files(reader)) do |action, name, stats|
4
+ # puppet doesn't have a hard dependency on minitar, so we
5
+ # can't be certain which version is installed. If it's 0.9
6
+ # or above then we can prevent minitar from fsync'ing each
7
+ # extracted file and directory, otherwise fallback to the
8
+ # old behavior
9
+ args = [reader, destdir, find_valid_files(reader)]
10
+ spec = Gem::Specification.find_by_name('minitar')
11
+ if spec && spec.version >= Gem::Version.new('0.9')
12
+ args << {:fsync => false}
13
+ end
14
+ Archive::Tar::Minitar.unpack(*args) do |action, name, stats|
5
15
  case action
6
16
  when :dir
7
17
  validate_entry(destdir, name)
@@ -83,7 +93,7 @@ class Puppet::ModuleTool::Tar::Mini
83
93
  def find_valid_files(tarfile)
84
94
  Archive::Tar::Minitar.open(tarfile).collect do |entry|
85
95
  flag = entry.typeflag
86
- if flag.nil? || flag =~ /[[:digit:]]/ && (0..7).include?(flag.to_i)
96
+ if flag.nil? || flag =~ /[[:digit:]]/ && (0..7).cover?(flag.to_i)
87
97
  entry.full_name
88
98
  else
89
99
  Puppet.debug "Invalid tar flag '#{flag}' will not be extracted: #{entry.name}"
@@ -114,6 +114,17 @@ class Puppet::Network::HTTP::API::IndirectedRoutes
114
114
  [indirection, method, key, params]
115
115
  end
116
116
 
117
+ def self.request_to_uri(request)
118
+ uri, body = request_to_uri_and_body(request)
119
+ "#{uri}?#{body}"
120
+ end
121
+
122
+ def self.request_to_uri_and_body(request)
123
+ url_prefix = IndirectionType.url_prefix_for(request.indirection_name.to_s)
124
+ indirection = request.method == :search ? pluralize(request.indirection_name.to_s) : request.indirection_name.to_s
125
+ ["#{url_prefix}/#{indirection}/#{Puppet::Util.uri_encode(request.key)}", "environment=#{request.environment.name}&#{request.query_string}"]
126
+ end
127
+
117
128
  private
118
129
 
119
130
  # Execute our find.
@@ -199,7 +210,7 @@ class Puppet::Network::HTTP::API::IndirectedRoutes
199
210
  return formatter if formatter
200
211
 
201
212
  raise Puppet::Network::HTTP::Error::HTTPNotAcceptableError.new(
202
- _("No supported formats are acceptable (Accept: %{accepted_formats})") % { accepted_formats: formats },
213
+ _("No supported formats are acceptable (Accept: %{accepted_formats})") % { accepted_formats: formats.map(&:mime).join(', ') },
203
214
  Puppet::Network::HTTP::Issues::UNSUPPORTED_FORMAT)
204
215
  end
205
216
 
@@ -246,20 +257,10 @@ class Puppet::Network::HTTP::API::IndirectedRoutes
246
257
  method
247
258
  end
248
259
 
249
- def self.request_to_uri(request)
250
- uri, body = request_to_uri_and_body(request)
251
- "#{uri}?#{body}"
252
- end
253
-
254
- def self.request_to_uri_and_body(request)
255
- url_prefix = IndirectionType.url_prefix_for(request.indirection_name.to_s)
256
- indirection = request.method == :search ? pluralize(request.indirection_name.to_s) : request.indirection_name.to_s
257
- ["#{url_prefix}/#{indirection}/#{Puppet::Util.uri_encode(request.key)}", "environment=#{request.environment.name}&#{request.query_string}"]
258
- end
259
-
260
260
  def self.pluralize(indirection)
261
261
  return(indirection == "status" ? "statuses" : indirection + "s")
262
262
  end
263
+ private_class_method :pluralize
263
264
 
264
265
  def plurality(indirection)
265
266
  # NOTE These specific hooks for paths are ridiculous, but it's a *many*-line
@@ -1,8 +1,11 @@
1
1
  require 'puppet/util/json'
2
2
  require 'puppet/parser/environment_compiler'
3
3
 
4
+ # @deprecated application orchestration will be removed in puppet 7
4
5
  class Puppet::Network::HTTP::API::Master::V3::Environment
5
6
  def call(request, response)
7
+ Puppet.deprecation_warning("Application orchestration is deprecated. See https://puppet.com/docs/puppet/5.5/deprecated_language.html")
8
+
6
9
  env_name = request.routing_path.split('/').last
7
10
  env = Puppet.lookup(:environments).get(env_name)
8
11
  code_id = request.params[:code_id]
@@ -198,6 +198,10 @@ module Puppet::Network::HTTP
198
198
  current_request[header] = value
199
199
  end
200
200
  when 429, 503
201
+ if connection.started?
202
+ Puppet.debug("Closing connection for #{current_site}")
203
+ connection.finish
204
+ end
201
205
  response = handle_retry_after(current_response)
202
206
  else
203
207
  response = current_response
@@ -311,19 +315,17 @@ module Puppet::Network::HTTP
311
315
  rescue => exception
312
316
  elapsed = (Time.now - start).to_f.round(3)
313
317
  uri = [@site.addr, request.path.split('?')[0]].join('/')
314
- eclass = exception.class
315
-
316
- err = case exception
317
- when EOFError
318
- eclass.new(_('request %{uri} interrupted after %{elapsed} seconds') % {uri: uri, elapsed: elapsed})
319
- when Timeout::Error
320
- eclass.new(_('request %{uri} timed out after %{elapsed} seconds') % {uri: uri, elapsed: elapsed})
321
- else
322
- eclass.new(_('request %{uri} failed: %{msg}') % {uri: uri, msg: exception.message})
323
- end
324
318
 
325
- err.set_backtrace(exception.backtrace) unless exception.backtrace.empty?
326
- raise err
319
+ case exception
320
+ when EOFError
321
+ Puppet.log_exception(exception, _('request %{uri} interrupted after %{elapsed} seconds') % {uri: uri, elapsed: elapsed})
322
+ when Timeout::Error
323
+ Puppet.log_exception(exception, _('request %{uri} timed out after %{elapsed} seconds') % {uri: uri, elapsed: elapsed})
324
+ else
325
+ Puppet.log_exception(exception, _('request %{uri} failed: %{msg}') % {uri: uri, msg: exception.message})
326
+ end
327
+
328
+ raise exception
327
329
  end
328
330
 
329
331
  def with_connection(site, &block)
@@ -25,17 +25,7 @@ class Puppet::Network::HTTP::Factory
25
25
  def create_connection(site)
26
26
  Puppet.debug("Creating new connection for #{site}")
27
27
 
28
- args = [site.host, site.port]
29
-
30
- unless Puppet::Util::HttpProxy.no_proxy?(site)
31
- if Puppet[:http_proxy_host] == "none"
32
- args << nil << nil
33
- else
34
- args << Puppet[:http_proxy_host] << Puppet[:http_proxy_port]
35
- end
36
- end
37
-
38
- http = Net::HTTP.new(*args)
28
+ http = Puppet::Util::HttpProxy.proxy(URI(site.addr))
39
29
  http.use_ssl = site.use_ssl?
40
30
  http.read_timeout = Puppet[:http_read_timeout]
41
31
  http.open_timeout = Puppet[:http_connect_timeout]
@@ -33,7 +33,7 @@ class Puppet::Network::HTTP::Pool
33
33
  reuse = false
34
34
  raise detail
35
35
  ensure
36
- if reuse
36
+ if reuse && http.started?
37
37
  release(site, http)
38
38
  else
39
39
  close_connection(site, http)
@@ -56,13 +56,17 @@ class Puppet::Network::HTTP::Pool
56
56
  end
57
57
 
58
58
  # Safely close a persistent connection.
59
+ # Don't try to close a connection that's already closed.
59
60
  #
60
61
  # @api private
61
62
  def close_connection(site, http)
63
+ return false unless http.started?
62
64
  Puppet.debug("Closing connection for #{site}")
63
65
  http.finish
66
+ true
64
67
  rescue => detail
65
68
  Puppet.log_exception(detail, _("Failed to close connection for %{site}: %{detail}") % { site: site, detail: detail })
69
+ nil
66
70
  end
67
71
 
68
72
  # Borrow and take ownership of a persistent connection. If a new
@@ -90,6 +94,8 @@ class Puppet::Network::HTTP::Pool
90
94
  #
91
95
  # @api private
92
96
  def setsockopts(netio)
97
+ return unless netio
98
+
93
99
  socket = netio.io
94
100
  socket.setsockopt(Socket::SOL_SOCKET, Socket::SO_KEEPALIVE, true)
95
101
  end
@@ -52,7 +52,7 @@ class Puppet::Network::HTTP::RackREST
52
52
  # Retrieve all headers from the http request, as a map.
53
53
  def headers(request)
54
54
  headers = request.env.select {|k,v| k.start_with? 'HTTP_'}.inject({}) do |m, (k,v)|
55
- m[k.sub(/^HTTP_/, '').gsub('_','-').downcase] = v
55
+ m[k.sub(/^HTTP_/, '').tr('_','-').downcase] = v
56
56
  m
57
57
  end
58
58
  headers['content-type'] = request.content_type
@@ -113,7 +113,7 @@ class Puppet::Network::HTTP::RackREST
113
113
  # in contrast to the environment variable, the client cert is passed in
114
114
  # as single string, therefore restore the certificate to a valid pem
115
115
  # encoded certificate
116
- cert.gsub!(/ /, "\n")
116
+ cert.tr!(' ', "\n")
117
117
  cert.gsub!(/BEGIN\nCERT/, "BEGIN CERT")
118
118
  cert.gsub!(/END\nCERT/, "END CERT")
119
119
  cert = Puppet::SSL::Certificate.from_instance(OpenSSL::X509::Certificate.new(cert))
@@ -15,7 +15,7 @@ class Puppet::Network::HTTP::Site
15
15
  end
16
16
 
17
17
  def addr
18
- "#{@scheme}://#{@host}:#{@port.to_s}"
18
+ "#{@scheme}://#{@host}:#{@port}"
19
19
  end
20
20
  alias to_s addr
21
21
 
@@ -18,7 +18,7 @@ module Puppet::Network::Resolver
18
18
  when :ca then service = '_x-puppet-ca'
19
19
  when :report then service = '_x-puppet-report'
20
20
  when :file then service = '_x-puppet-fileserver'
21
- else service = "_x-puppet-#{service_name.to_s}"
21
+ else service = "_x-puppet-#{service_name}"
22
22
  end
23
23
  srv_record = "#{service}._tcp.#{domain}"
24
24
 
@@ -33,7 +33,7 @@ module Puppet::Network::Resolver
33
33
  else
34
34
  each_priority(records) do |priority, recs|
35
35
  while next_rr = recs.delete(find_weighted_server(recs))
36
- Puppet.debug "Yielding next server of #{next_rr.target.to_s}:#{next_rr.port}"
36
+ Puppet.debug "Yielding next server of #{next_rr.target}:#{next_rr.port}"
37
37
  yield next_rr.target.to_s, next_rr.port
38
38
  end
39
39
  end
@@ -507,8 +507,7 @@ class Puppet::Node::Environment
507
507
  [self.class, name, full_modulepath, manifest].hash
508
508
  end
509
509
 
510
- private
511
-
510
+ # not private so it can be called in tests
512
511
  def self.extralibs()
513
512
  if Puppet::Util.get_env('PUPPETLIB')
514
513
  split_path(Puppet::Util.get_env('PUPPETLIB'))
@@ -517,11 +516,14 @@ class Puppet::Node::Environment
517
516
  end
518
517
  end
519
518
 
519
+ private
520
+
520
521
  def self.expand_dirs(dirs)
521
522
  dirs.collect do |dir|
522
523
  Puppet::FileSystem.expand_path(dir)
523
524
  end
524
525
  end
526
+ private_class_method :expand_dirs
525
527
 
526
528
  # Reparse the manifests for the given environment
527
529
  #
@@ -93,6 +93,14 @@ class Puppet::Parameter
93
93
  end
94
94
  end
95
95
 
96
+ def sensitive(value = nil, &block)
97
+ if block
98
+ define_method(:is_sensitive, &block)
99
+ else
100
+ define_method(:is_sensitive) do value end
101
+ end
102
+ end
103
+
96
104
  # Produces a documentation string.
97
105
  # If an enumeration of _valid values_ has been defined, it is appended to the documentation
98
106
  # for this parameter specified with the {desc} method.
@@ -12,7 +12,7 @@ class Puppet::Parser::AST
12
12
  attr_accessor :parent, :scope, :file, :line, :pos
13
13
 
14
14
  def inspect
15
- "( #{self.class} #{self.to_s} #{@children.inspect} )"
15
+ "( #{self.class} #{self} #{@children.inspect} )"
16
16
  end
17
17
 
18
18
  # Evaluate the current object. Just a stub method, since the subclass
@@ -26,6 +26,6 @@ class Puppet::Parser::AST::ResourceParam < Puppet::Parser::AST::Branch
26
26
  end
27
27
 
28
28
  def to_s
29
- "#{@param} => #{@value.to_s}"
29
+ "#{@param} => #{@value}"
30
30
  end
31
31
  end
@@ -1,6 +1,8 @@
1
1
  class Puppet::Parser::Compiler
2
2
  # Validator that asserts that all capability resources that are referenced by 'consume' or 'require' has
3
3
  # been exported by some other resource in the environment
4
+ #
5
+ # @deprecated application orchestration will be removed in puppet 7
4
6
  class CatalogValidator::EnvironmentRelationshipValidator < CatalogValidator
5
7
 
6
8
  def validate
@@ -1,5 +1,7 @@
1
1
  class Puppet::Parser::Compiler
2
2
  # Validator that asserts that only application components can appear inside a site.
3
+ #
4
+ # @deprecated application orchestration will be removed in puppet 7
3
5
  class CatalogValidator::SiteValidator < CatalogValidator
4
6
  def self.validation_stage?(stage)
5
7
  PRE_FINISH.equal?(stage)
@@ -1,5 +1,6 @@
1
1
  require 'puppet/parser/compiler'
2
2
 
3
+ # @deprecated application orchestration will be removed in puppet 7
3
4
  class Puppet::Parser::EnvironmentCompiler < Puppet::Parser::Compiler
4
5
  def self.compile(env, code_id=nil)
5
6
  begin
@@ -54,6 +55,8 @@ class Puppet::Parser::EnvironmentCompiler < Puppet::Parser::Compiler
54
55
  end
55
56
 
56
57
  def compile
58
+ Puppet.deprecation_warning("Application orchestration is deprecated. See https://puppet.com/docs/puppet/5.5/deprecated_language.html")
59
+
57
60
  add_function_overrides
58
61
  begin
59
62
  Puppet.override(@context_overrides, _("For compiling environment catalog %{env}") % { env: environment.name }) do
@@ -24,7 +24,7 @@ module Puppet::Parser::Functions
24
24
  Puppet::Util::Log.levels.each do |level|
25
25
  newfunction(level,
26
26
  :environment => root_env,
27
- :doc => "Log a message on the server at level #{level.to_s}.") do |vals|
27
+ :doc => "Log a message on the server at level #{level}.") do |vals|
28
28
  send(level, vals.join(" "))
29
29
  end
30
30
  end
@@ -7,12 +7,12 @@ result as a String.
7
7
  The first argument to this function should be a `<MODULE NAME>/<TEMPLATE FILE>`
8
8
  reference, which loads `<TEMPLATE FILE>` from `<MODULE NAME>`'s `templates`
9
9
  directory. In most cases, the last argument is optional; if used, it should be a
10
- [hash](/puppet/latest/reference/lang_data_hash.html) that contains parameters to
10
+ [hash](https://puppet.com/docs/puppet/latest/lang_data_hash.html) that contains parameters to
11
11
  pass to the template.
12
12
 
13
- - See the [template](/puppet/latest/reference/lang_template.html) documentation
13
+ - See the [template](https://puppet.com/docs/puppet/latest/lang_template.html) documentation
14
14
  for general template usage information.
15
- - See the [EPP syntax](/puppet/latest/reference/lang_template_epp.html)
15
+ - See the [EPP syntax](https://puppet.com/docs/puppet/latest/lang_template_epp.html)
16
16
  documentation for examples of EPP.
17
17
 
18
18
  For example, to call the apache module's `templates/vhost/_docroot.epp`
@@ -6,12 +6,12 @@ text result as a String.
6
6
 
7
7
  The first argument to this function should be a string containing an EPP
8
8
  template. In most cases, the last argument is optional; if used, it should be a
9
- [hash](/puppet/latest/reference/lang_data_hash.html) that contains parameters to
9
+ [hash](https://puppet.com/docs/puppet/latest/lang_data_hash.html) that contains parameters to
10
10
  pass to the template.
11
11
 
12
- - See the [template](/puppet/latest/reference/lang_template.html) documentation
12
+ - See the [template](https://puppet.com/docs/puppet/latest/lang_template.html) documentation
13
13
  for general template usage information.
14
- - See the [EPP syntax](/puppet/latest/reference/lang_template_epp.html)
14
+ - See the [EPP syntax](https://puppet.com/docs/puppet/latest/lang_template_epp.html)
15
15
  documentation for examples of EPP.
16
16
 
17
17
  For example, to evaluate an inline EPP template and pass it the `docroot` and
@@ -29,7 +29,7 @@ parameter tag without default values. Puppet produces an error if the
29
29
  `inline_epp` function fails to pass any required parameter.
30
30
 
31
31
  An inline EPP template should be written as a single-quoted string or
32
- [heredoc](/puppet/latest/reference/lang_data_string.html#heredocs).
32
+ [heredoc](https://puppet.com/docs/puppet/latest/lang_data_string.html#heredocs).
33
33
  A double-quoted string is subject to expression interpolation before the string
34
34
  is parsed as an EPP template.
35
35
 
@@ -45,7 +45,7 @@ END
45
45
  ~~~
46
46
 
47
47
  - Since 3.5
48
- - Requires [future parser](/puppet/3.8/reference/experiments_future.html) in Puppet 3.5 to 3.8") do |arguments|
48
+ - Requires [future parser](https://puppet.com/docs/puppet/3.8/experiments_future.html) in Puppet 3.5 to 3.8") do |arguments|
49
49
 
50
50
  Puppet::Parser::Functions::Error.is4x('inline_epp')
51
51
  end
@@ -337,10 +337,11 @@ class Puppet::Parser::Resource < Puppet::Resource
337
337
  end
338
338
 
339
339
  def replace_sensitive_data
340
- parameters.each_pair do |name, param|
340
+ parameters.keys.each do |name|
341
+ param = parameters[name]
341
342
  if param.value.is_a?(Puppet::Pops::Types::PSensitiveType::Sensitive)
342
343
  @sensitive_parameters << name
343
- param.value = param.value.unwrap
344
+ parameters[name] = Puppet::Parser::Resource::Param.from_param(param, param.value.unwrap)
344
345
  end
345
346
  end
346
347
  end
@@ -19,4 +19,10 @@ class Puppet::Parser::Resource::Param
19
19
  def to_s
20
20
  "#{self.name} => #{self.value}"
21
21
  end
22
+
23
+ def self.from_param(param, value)
24
+ new_param = param.dup
25
+ new_param.value = value
26
+ return new_param
27
+ end
22
28
  end