puppet 5.5.17 → 5.5.22

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (340) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +1 -1
  3. data/Gemfile +4 -5
  4. data/Gemfile.lock +59 -55
  5. data/ext/build_defaults.yaml +1 -0
  6. data/ext/cert_inspector +3 -3
  7. data/ext/puppet-test +2 -2
  8. data/ext/regexp_nodes/regexp_nodes.rb +4 -4
  9. data/ext/windows/service/daemon.rb +54 -8
  10. data/install.rb +6 -6
  11. data/lib/puppet.rb +5 -2
  12. data/lib/puppet/agent.rb +5 -13
  13. data/lib/puppet/application.rb +1 -1
  14. data/lib/puppet/application/agent.rb +3 -1
  15. data/lib/puppet/application/apply.rb +2 -2
  16. data/lib/puppet/application/describe.rb +3 -9
  17. data/lib/puppet/application/doc.rb +1 -1
  18. data/lib/puppet/application/filebucket.rb +13 -0
  19. data/lib/puppet/application/lookup.rb +1 -1
  20. data/lib/puppet/application/script.rb +2 -2
  21. data/lib/puppet/configurer.rb +106 -31
  22. data/lib/puppet/configurer/downloader.rb +33 -16
  23. data/lib/puppet/daemon.rb +1 -1
  24. data/lib/puppet/defaults.rb +86 -40
  25. data/lib/puppet/error.rb +9 -1
  26. data/lib/puppet/external/nagios/base.rb +1 -1
  27. data/lib/puppet/face/ca.rb +1 -1
  28. data/lib/puppet/face/module/list.rb +5 -5
  29. data/lib/puppet/face/module/search.rb +1 -1
  30. data/lib/puppet/face/module/uninstall.rb +1 -1
  31. data/lib/puppet/face/module/upgrade.rb +1 -1
  32. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  33. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  34. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  35. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  36. data/lib/puppet/file_system.rb +0 -8
  37. data/lib/puppet/file_system/memory_file.rb +1 -1
  38. data/lib/puppet/file_system/posix.rb +3 -2
  39. data/lib/puppet/file_system/uniquefile.rb +4 -0
  40. data/lib/puppet/forge.rb +3 -3
  41. data/lib/puppet/functions/epp.rb +4 -4
  42. data/lib/puppet/functions/inline_epp.rb +5 -5
  43. data/lib/puppet/functions/new.rb +8 -3
  44. data/lib/puppet/functions/reduce.rb +2 -4
  45. data/lib/puppet/functions/reverse_each.rb +1 -1
  46. data/lib/puppet/functions/step.rb +1 -1
  47. data/lib/puppet/gettext/module_translations.rb +1 -1
  48. data/lib/puppet/graph/rb_tree_map.rb +2 -2
  49. data/lib/puppet/graph/simple_graph.rb +6 -5
  50. data/lib/puppet/indirector/catalog/compiler.rb +8 -0
  51. data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
  52. data/lib/puppet/indirector/hiera.rb +6 -0
  53. data/lib/puppet/indirector/resource/ral.rb +1 -3
  54. data/lib/puppet/indirector/resource/validator.rb +1 -1
  55. data/lib/puppet/interface.rb +2 -1
  56. data/lib/puppet/loaders.rb +0 -1
  57. data/lib/puppet/metatype/manager.rb +1 -1
  58. data/lib/puppet/module.rb +1 -1
  59. data/lib/puppet/module_tool/applications/builder.rb +1 -1
  60. data/lib/puppet/module_tool/applications/installer.rb +1 -1
  61. data/lib/puppet/module_tool/applications/uninstaller.rb +3 -3
  62. data/lib/puppet/module_tool/metadata.rb +1 -1
  63. data/lib/puppet/module_tool/shared_behaviors.rb +4 -4
  64. data/lib/puppet/module_tool/tar/mini.rb +1 -1
  65. data/lib/puppet/network/http/api/indirected_routes.rb +13 -12
  66. data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
  67. data/lib/puppet/network/http/connection.rb +14 -12
  68. data/lib/puppet/network/http/pool.rb +7 -1
  69. data/lib/puppet/network/http/rack/rest.rb +2 -2
  70. data/lib/puppet/network/http/site.rb +1 -1
  71. data/lib/puppet/network/resolver.rb +2 -2
  72. data/lib/puppet/node/environment.rb +11 -3
  73. data/lib/puppet/parser/ast.rb +1 -1
  74. data/lib/puppet/parser/ast/resourceparam.rb +1 -1
  75. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
  76. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
  77. data/lib/puppet/parser/environment_compiler.rb +3 -0
  78. data/lib/puppet/parser/functions.rb +14 -10
  79. data/lib/puppet/parser/functions/epp.rb +3 -3
  80. data/lib/puppet/parser/functions/inline_epp.rb +5 -5
  81. data/lib/puppet/parser/resource.rb +3 -2
  82. data/lib/puppet/parser/resource/param.rb +6 -0
  83. data/lib/puppet/pops/adaptable.rb +7 -13
  84. data/lib/puppet/pops/adapters.rb +8 -4
  85. data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
  86. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
  87. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
  88. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -1
  89. data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
  90. data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -2
  91. data/lib/puppet/pops/evaluator/runtime3_support.rb +4 -4
  92. data/lib/puppet/pops/issues.rb +5 -0
  93. data/lib/puppet/pops/loaders.rb +1 -1
  94. data/lib/puppet/pops/lookup/hiera_config.rb +1 -0
  95. data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
  96. data/lib/puppet/pops/merge_strategy.rb +22 -18
  97. data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
  98. data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
  99. data/lib/puppet/pops/parser/locator.rb +1 -1
  100. data/lib/puppet/pops/parser/pn_parser.rb +17 -16
  101. data/lib/puppet/pops/puppet_stack.rb +51 -48
  102. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
  103. data/lib/puppet/pops/types/iterable.rb +34 -8
  104. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  105. data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
  106. data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
  107. data/lib/puppet/pops/types/string_converter.rb +10 -10
  108. data/lib/puppet/pops/types/type_calculator.rb +24 -0
  109. data/lib/puppet/pops/types/types.rb +3 -3
  110. data/lib/puppet/pops/validation/checker4_0.rb +29 -15
  111. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  112. data/lib/puppet/property.rb +1 -1
  113. data/lib/puppet/property/ensure.rb +1 -1
  114. data/lib/puppet/provider/augeas/augeas.rb +1 -1
  115. data/lib/puppet/provider/cron/crontab.rb +1 -1
  116. data/lib/puppet/provider/exec.rb +6 -2
  117. data/lib/puppet/provider/group/groupadd.rb +19 -19
  118. data/lib/puppet/provider/group/windows_adsi.rb +3 -3
  119. data/lib/puppet/provider/mailalias/aliases.rb +1 -1
  120. data/lib/puppet/provider/mount.rb +1 -1
  121. data/lib/puppet/provider/mount/parsed.rb +8 -8
  122. data/lib/puppet/provider/nameservice/directoryservice.rb +1 -1
  123. data/lib/puppet/provider/nameservice/pw.rb +2 -2
  124. data/lib/puppet/provider/package/aix.rb +17 -2
  125. data/lib/puppet/provider/package/apt.rb +14 -3
  126. data/lib/puppet/provider/package/dnfmodule.rb +141 -0
  127. data/lib/puppet/provider/package/dpkg.rb +16 -18
  128. data/lib/puppet/provider/package/fink.rb +20 -3
  129. data/lib/puppet/provider/package/gem.rb +4 -2
  130. data/lib/puppet/provider/package/openbsd.rb +14 -2
  131. data/lib/puppet/provider/package/pip.rb +37 -10
  132. data/lib/puppet/provider/package/pkg.rb +18 -5
  133. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  134. data/lib/puppet/provider/package/pkgng.rb +16 -4
  135. data/lib/puppet/provider/package/portage.rb +4 -4
  136. data/lib/puppet/provider/package/puppet_gem.rb +5 -0
  137. data/lib/puppet/provider/package/rpm.rb +6 -6
  138. data/lib/puppet/provider/package/windows/package.rb +1 -1
  139. data/lib/puppet/provider/package/yum.rb +28 -20
  140. data/lib/puppet/provider/package/zypper.rb +1 -0
  141. data/lib/puppet/provider/package_targetable.rb +5 -4
  142. data/lib/puppet/provider/parsedfile.rb +1 -1
  143. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +3 -3
  144. data/lib/puppet/provider/selmodule/semodule.rb +43 -26
  145. data/lib/puppet/provider/service/daemontools.rb +9 -9
  146. data/lib/puppet/provider/service/openbsd.rb +1 -1
  147. data/lib/puppet/provider/service/rcng.rb +2 -2
  148. data/lib/puppet/provider/service/runit.rb +2 -8
  149. data/lib/puppet/provider/service/systemd.rb +31 -13
  150. data/lib/puppet/provider/user/directoryservice.rb +31 -6
  151. data/lib/puppet/provider/user/hpux.rb +1 -1
  152. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  153. data/lib/puppet/provider/user/useradd.rb +39 -20
  154. data/lib/puppet/provider/user/windows_adsi.rb +4 -5
  155. data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
  156. data/lib/puppet/reference/indirection.rb +2 -2
  157. data/lib/puppet/reference/metaparameter.rb +1 -3
  158. data/lib/puppet/reference/providers.rb +1 -1
  159. data/lib/puppet/reference/type.rb +3 -9
  160. data/lib/puppet/reports.rb +1 -1
  161. data/lib/puppet/resource.rb +1 -1
  162. data/lib/puppet/resource/catalog.rb +1 -1
  163. data/lib/puppet/resource/type.rb +10 -1
  164. data/lib/puppet/settings.rb +3 -3
  165. data/lib/puppet/settings/environment_conf.rb +1 -0
  166. data/lib/puppet/ssl/certificate.rb +2 -1
  167. data/lib/puppet/ssl/certificate_authority.rb +6 -5
  168. data/lib/puppet/ssl/certificate_authority/interface.rb +1 -1
  169. data/lib/puppet/ssl/certificate_factory.rb +2 -2
  170. data/lib/puppet/ssl/host.rb +3 -3
  171. data/lib/puppet/ssl/oids.rb +1 -1
  172. data/lib/puppet/test/test_helper.rb +20 -12
  173. data/lib/puppet/transaction/report.rb +1 -1
  174. data/lib/puppet/transaction/resource_harness.rb +1 -1
  175. data/lib/puppet/type.rb +8 -4
  176. data/lib/puppet/type/cron.rb +1 -1
  177. data/lib/puppet/type/exec.rb +7 -3
  178. data/lib/puppet/type/file.rb +14 -2
  179. data/lib/puppet/type/file/data_sync.rb +5 -1
  180. data/lib/puppet/type/group.rb +4 -2
  181. data/lib/puppet/type/interface.rb +1 -1
  182. data/lib/puppet/type/notify.rb +3 -2
  183. data/lib/puppet/type/package.rb +97 -8
  184. data/lib/puppet/type/schedule.rb +1 -1
  185. data/lib/puppet/type/selboolean.rb +17 -3
  186. data/lib/puppet/type/service.rb +2 -8
  187. data/lib/puppet/type/user.rb +5 -9
  188. data/lib/puppet/util.rb +35 -12
  189. data/lib/puppet/util/autoload.rb +9 -7
  190. data/lib/puppet/util/command_line/trollop.rb +1 -1
  191. data/lib/puppet/util/http_proxy.rb +8 -14
  192. data/lib/puppet/util/instance_loader.rb +1 -1
  193. data/lib/puppet/util/log.rb +1 -1
  194. data/lib/puppet/util/log/destinations.rb +3 -12
  195. data/lib/puppet/util/logging.rb +30 -18
  196. data/lib/puppet/util/metric.rb +2 -2
  197. data/lib/puppet/util/monkey_patches.rb +1 -1
  198. data/lib/puppet/util/nagios_maker.rb +2 -2
  199. data/lib/puppet/util/network_device/cisco/device.rb +1 -1
  200. data/lib/puppet/util/network_device/cisco/interface.rb +2 -2
  201. data/lib/puppet/util/network_device/transport/ssh.rb +1 -1
  202. data/lib/puppet/util/pidlock.rb +12 -6
  203. data/lib/puppet/util/plist.rb +6 -0
  204. data/lib/puppet/util/provider_features.rb +2 -4
  205. data/lib/puppet/util/rdoc.rb +1 -1
  206. data/lib/puppet/util/reference.rb +1 -1
  207. data/lib/puppet/util/resource_template.rb +1 -1
  208. data/lib/puppet/util/selinux.rb +3 -1
  209. data/lib/puppet/util/windows/adsi.rb +60 -30
  210. data/lib/puppet/util/windows/api_types.rb +45 -32
  211. data/lib/puppet/util/windows/eventlog.rb +1 -6
  212. data/lib/puppet/util/windows/principal.rb +8 -6
  213. data/lib/puppet/util/windows/process.rb +16 -15
  214. data/lib/puppet/util/windows/registry.rb +17 -15
  215. data/lib/puppet/util/windows/security.rb +1 -0
  216. data/lib/puppet/util/windows/sid.rb +3 -3
  217. data/lib/puppet/vendor.rb +1 -1
  218. data/lib/puppet/version.rb +1 -1
  219. data/lib/puppet_pal.rb +2 -2
  220. data/locales/puppet.pot +362 -318
  221. data/man/man5/puppet.conf.5 +39 -9
  222. data/man/man8/puppet-agent.8 +2 -2
  223. data/man/man8/puppet-apply.8 +1 -1
  224. data/man/man8/puppet-ca.8 +1 -1
  225. data/man/man8/puppet-catalog.8 +1 -1
  226. data/man/man8/puppet-cert.8 +1 -1
  227. data/man/man8/puppet-certificate.8 +1 -1
  228. data/man/man8/puppet-certificate_request.8 +1 -1
  229. data/man/man8/puppet-certificate_revocation_list.8 +1 -1
  230. data/man/man8/puppet-config.8 +1 -1
  231. data/man/man8/puppet-describe.8 +1 -1
  232. data/man/man8/puppet-device.8 +1 -1
  233. data/man/man8/puppet-doc.8 +1 -1
  234. data/man/man8/puppet-epp.8 +1 -1
  235. data/man/man8/puppet-facts.8 +1 -1
  236. data/man/man8/puppet-filebucket.8 +16 -1
  237. data/man/man8/puppet-generate.8 +1 -1
  238. data/man/man8/puppet-help.8 +1 -1
  239. data/man/man8/puppet-key.8 +1 -1
  240. data/man/man8/puppet-lookup.8 +1 -1
  241. data/man/man8/puppet-man.8 +1 -1
  242. data/man/man8/puppet-master.8 +1 -1
  243. data/man/man8/puppet-module.8 +1 -1
  244. data/man/man8/puppet-node.8 +1 -1
  245. data/man/man8/puppet-parser.8 +1 -1
  246. data/man/man8/puppet-plugin.8 +1 -1
  247. data/man/man8/puppet-report.8 +1 -1
  248. data/man/man8/puppet-resource.8 +1 -1
  249. data/man/man8/puppet-script.8 +1 -1
  250. data/man/man8/puppet-status.8 +1 -1
  251. data/man/man8/puppet.8 +2 -2
  252. data/spec/fixtures/integration/provider/mailalias/aliases/test1 +1 -0
  253. data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +19 -0
  254. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
  255. data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
  256. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
  257. data/spec/integration/configurer_spec.rb +66 -0
  258. data/spec/integration/data_binding_spec.rb +1 -0
  259. data/spec/integration/defaults_spec.rb +1 -2
  260. data/spec/integration/faces/plugin_spec.rb +29 -47
  261. data/spec/integration/indirector/facts/facter_spec.rb +4 -0
  262. data/spec/integration/parser/compiler_spec.rb +11 -0
  263. data/spec/integration/type/notify_spec.rb +46 -0
  264. data/spec/integration/util/windows/adsi_spec.rb +6 -1
  265. data/spec/integration/util/windows/registry_spec.rb +7 -7
  266. data/spec/shared_contexts/types_setup.rb +2 -0
  267. data/spec/unit/agent_spec.rb +34 -26
  268. data/spec/unit/application/apply_spec.rb +2 -12
  269. data/spec/unit/configurer/downloader_spec.rb +10 -0
  270. data/spec/unit/configurer/fact_handler_spec.rb +0 -4
  271. data/spec/unit/configurer_spec.rb +430 -415
  272. data/spec/unit/daemon_spec.rb +0 -1
  273. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  274. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  275. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  276. data/spec/unit/file_system/uniquefile_spec.rb +11 -0
  277. data/spec/unit/forge/forge_spec.rb +1 -3
  278. data/spec/unit/forge/repository_spec.rb +1 -3
  279. data/spec/unit/indirector/catalog/compiler_spec.rb +45 -26
  280. data/spec/unit/indirector/resource/ral_spec.rb +4 -4
  281. data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
  282. data/spec/unit/network/http/connection_spec.rb +43 -1
  283. data/spec/unit/network/http/pool_spec.rb +32 -0
  284. data/spec/unit/node_spec.rb +7 -4
  285. data/spec/unit/parser/environment_compiler_spec.rb +7 -0
  286. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -3
  287. data/spec/unit/provider/exec_spec.rb +209 -0
  288. data/spec/unit/provider/group/groupadd_spec.rb +30 -1
  289. data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
  290. data/spec/unit/provider/package/aix_spec.rb +29 -0
  291. data/spec/unit/provider/package/apt_spec.rb +13 -2
  292. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  293. data/spec/unit/provider/package/dnfmodule_spec.rb +247 -0
  294. data/spec/unit/provider/package/dpkg_spec.rb +35 -7
  295. data/spec/unit/provider/package/openbsd_spec.rb +17 -0
  296. data/spec/unit/provider/package/pip_spec.rb +93 -22
  297. data/spec/unit/provider/package/pkg_spec.rb +13 -1
  298. data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
  299. data/spec/unit/provider/package/pkgng_spec.rb +36 -0
  300. data/spec/unit/provider/package/portage_spec.rb +4 -4
  301. data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
  302. data/spec/unit/provider/package/yum_spec.rb +90 -0
  303. data/spec/unit/provider/package/zypper_spec.rb +13 -0
  304. data/spec/unit/provider/package_targetable_spec.rb +60 -0
  305. data/spec/unit/provider/selmodule_spec.rb +118 -47
  306. data/spec/unit/provider/service/daemontools_spec.rb +24 -0
  307. data/spec/unit/provider/service/runit_spec.rb +24 -0
  308. data/spec/unit/provider/service/systemd_spec.rb +109 -36
  309. data/spec/unit/provider/user/directoryservice_spec.rb +41 -0
  310. data/spec/unit/provider/user/hpux_spec.rb +2 -2
  311. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  312. data/spec/unit/provider/user/useradd_spec.rb +81 -16
  313. data/spec/unit/provider/user/windows_adsi_spec.rb +3 -3
  314. data/spec/unit/puppet_pal_2pec.rb +3 -0
  315. data/spec/unit/ssl/certificate_authority_spec.rb +2 -3
  316. data/spec/unit/ssl/certificate_spec.rb +7 -0
  317. data/spec/unit/ssl/host_spec.rb +2 -0
  318. data/spec/unit/test/test_helper_spec.rb +17 -0
  319. data/spec/unit/type/exec_spec.rb +6 -12
  320. data/spec/unit/type/file/content_spec.rb +9 -3
  321. data/spec/unit/type/file_spec.rb +9 -4
  322. data/spec/unit/type/package_spec.rb +8 -0
  323. data/spec/unit/type/selboolean_spec.rb +4 -6
  324. data/spec/unit/type/service_spec.rb +9 -8
  325. data/spec/unit/type/user_spec.rb +19 -13
  326. data/spec/unit/util/execution_spec.rb +16 -0
  327. data/spec/unit/util/http_proxy_spec.rb +97 -0
  328. data/spec/unit/util/log/destinations_spec.rb +2 -26
  329. data/spec/unit/util/log_spec.rb +0 -138
  330. data/spec/unit/util/logging_spec.rb +200 -0
  331. data/spec/unit/util/pidlock_spec.rb +67 -40
  332. data/spec/unit/util/plist_spec.rb +20 -0
  333. data/spec/unit/util/windows/adsi_spec.rb +55 -4
  334. data/spec/unit/util/windows/api_types_spec.rb +104 -40
  335. data/spec/unit/util/windows/sid_spec.rb +2 -2
  336. data/tasks/manpages.rake +1 -0
  337. metadata +16 -7
  338. data/lib/puppet/pops/loader/null_loader.rb +0 -60
  339. data/locales/ja/puppet.po +0 -12114
  340. data/spec/integration/test/test_helper_spec.rb +0 -31
@@ -304,7 +304,7 @@ module Puppet::ModuleTool
304
304
  @environment.modules_by_path[options[:target_dir]].each do |mod|
305
305
  if mod.has_metadata?
306
306
  metadata = {
307
- :name => mod.forge_name.gsub('/', '-'),
307
+ :name => mod.forge_name.tr('/', '-'),
308
308
  :version => mod.version
309
309
  }
310
310
  next if release[:module] == metadata[:name]
@@ -53,7 +53,7 @@ module Puppet::ModuleTool
53
53
 
54
54
  def find_installed_module
55
55
  @environment.modules_by_path.values.flatten.each do |mod|
56
- mod_name = (mod.forge_name || mod.name).gsub('/', '-')
56
+ mod_name = (mod.forge_name || mod.name).tr('/', '-')
57
57
  if mod_name == @name
58
58
  @unfiltered << {
59
59
  :name => mod_name,
@@ -102,7 +102,7 @@ module Puppet::ModuleTool
102
102
  if mod.has_metadata? && !changes.empty?
103
103
  raise LocalChangesError,
104
104
  :action => :uninstall,
105
- :module_name => (mod.forge_name || mod.name).gsub('/', '-'),
105
+ :module_name => (mod.forge_name || mod.name).tr('/', '-'),
106
106
  :requested_version => @options[:version],
107
107
  :installed_version => mod.version
108
108
  end
@@ -110,7 +110,7 @@ module Puppet::ModuleTool
110
110
 
111
111
  if !@options[:force] && !mod.required_by.empty?
112
112
  raise ModuleIsRequiredError,
113
- :module_name => (mod.forge_name || mod.name).gsub('/', '-'),
113
+ :module_name => (mod.forge_name || mod.name).tr('/', '-'),
114
114
  :required_by => mod.required_by,
115
115
  :requested_version => @options[:version],
116
116
  :installed_version => mod.version
@@ -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
@@ -93,7 +93,7 @@ class Puppet::ModuleTool::Tar::Mini
93
93
  def find_valid_files(tarfile)
94
94
  Archive::Tar::Minitar.open(tarfile).collect do |entry|
95
95
  flag = entry.typeflag
96
- if flag.nil? || flag =~ /[[:digit:]]/ && (0..7).include?(flag.to_i)
96
+ if flag.nil? || flag =~ /[[:digit:]]/ && (0..7).cover?(flag.to_i)
97
97
  entry.full_name
98
98
  else
99
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)
@@ -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
@@ -285,7 +285,7 @@ class Puppet::Node::Environment
285
285
  # @param name [String] The module name
286
286
  # @return [Puppet::Module, nil] The module if found, else nil
287
287
  def module(name)
288
- modules.find {|mod| mod.name == name}
288
+ modules_by_name[name]
289
289
  end
290
290
 
291
291
  # Locate a module instance by the full forge name (EG authorname/module)
@@ -340,6 +340,12 @@ class Puppet::Node::Environment
340
340
  @modules
341
341
  end
342
342
 
343
+ # @api private
344
+ def modules_by_name
345
+ @modules_by_name ||= Hash[modules.map { |mod| [mod.name, mod] }]
346
+ end
347
+ private :modules_by_name
348
+
343
349
  # Generate a warning if the given directory in a module path entry is named `lib`.
344
350
  #
345
351
  # @api private
@@ -507,8 +513,7 @@ class Puppet::Node::Environment
507
513
  [self.class, name, full_modulepath, manifest].hash
508
514
  end
509
515
 
510
- private
511
-
516
+ # not private so it can be called in tests
512
517
  def self.extralibs()
513
518
  if Puppet::Util.get_env('PUPPETLIB')
514
519
  split_path(Puppet::Util.get_env('PUPPETLIB'))
@@ -517,11 +522,14 @@ class Puppet::Node::Environment
517
522
  end
518
523
  end
519
524
 
525
+ private
526
+
520
527
  def self.expand_dirs(dirs)
521
528
  dirs.collect do |dir|
522
529
  Puppet::FileSystem.expand_path(dir)
523
530
  end
524
531
  end
532
+ private_class_method :expand_dirs
525
533
 
526
534
  # Reparse the manifests for the given environment
527
535
  #
@@ -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
@@ -44,15 +44,10 @@ module Puppet::Parser::Functions
44
44
  # @api private
45
45
  class AnonymousModuleAdapter < Puppet::Pops::Adaptable::Adapter
46
46
  attr_accessor :module
47
- end
48
47
 
49
- # Get the module that functions are mixed into corresponding to an
50
- # environment
51
- #
52
- # @api private
53
- def self.environment_module(env)
54
- AnonymousModuleAdapter.adapt(env) do |a|
55
- a.module ||= Module.new do
48
+ def self.create_adapter(env)
49
+ adapter = super(env)
50
+ adapter.module = Module.new do
56
51
  @metadata = {}
57
52
 
58
53
  def self.all_function_info
@@ -67,7 +62,16 @@ module Puppet::Parser::Functions
67
62
  @metadata[name] = info
68
63
  end
69
64
  end
70
- end.module
65
+ adapter
66
+ end
67
+ end
68
+
69
+ # Get the module that functions are mixed into corresponding to an
70
+ # environment
71
+ #
72
+ # @api private
73
+ def self.environment_module(env)
74
+ AnonymousModuleAdapter.adapt(env).module
71
75
  end
72
76
 
73
77
  # Create a new Puppet DSL function.
@@ -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