puppet 6.17.0-universal-darwin → 6.21.0-universal-darwin

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 (401) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -16
  3. data/Gemfile +2 -0
  4. data/Gemfile.lock +38 -34
  5. data/README.md +1 -2
  6. data/Rakefile +4 -12
  7. data/lib/puppet/agent/locker.rb +0 -7
  8. data/lib/puppet/application.rb +10 -6
  9. data/lib/puppet/application/agent.rb +9 -3
  10. data/lib/puppet/application/apply.rb +20 -21
  11. data/lib/puppet/application/device.rb +1 -0
  12. data/lib/puppet/application/doc.rb +1 -1
  13. data/lib/puppet/application/filebucket.rb +2 -2
  14. data/lib/puppet/application/lookup.rb +16 -4
  15. data/lib/puppet/application/script.rb +1 -0
  16. data/lib/puppet/application_support.rb +7 -0
  17. data/lib/puppet/configurer.rb +50 -8
  18. data/lib/puppet/configurer/downloader.rb +31 -10
  19. data/lib/puppet/confine.rb +1 -1
  20. data/lib/puppet/confine/any.rb +1 -1
  21. data/lib/puppet/defaults.rb +88 -38
  22. data/lib/puppet/environments.rb +84 -59
  23. data/lib/puppet/face/catalog.rb +1 -1
  24. data/lib/puppet/face/config.rb +56 -16
  25. data/lib/puppet/face/epp.rb +12 -2
  26. data/lib/puppet/face/facts.rb +60 -0
  27. data/lib/puppet/face/node.rb +3 -3
  28. data/lib/puppet/face/node/clean.rb +2 -2
  29. data/lib/puppet/face/status.rb +1 -1
  30. data/lib/puppet/feature/base.rb +1 -1
  31. data/lib/puppet/ffi/posix.rb +10 -0
  32. data/lib/puppet/ffi/posix/constants.rb +14 -0
  33. data/lib/puppet/ffi/posix/functions.rb +24 -0
  34. data/lib/puppet/file_bucket/dipper.rb +1 -1
  35. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  36. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  37. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  38. data/lib/puppet/file_system/file_impl.rb +3 -3
  39. data/lib/puppet/functions/epp.rb +1 -0
  40. data/lib/puppet/functions/inline_epp.rb +1 -0
  41. data/lib/puppet/functions/lstrip.rb +4 -4
  42. data/lib/puppet/functions/new.rb +8 -3
  43. data/lib/puppet/functions/reverse_each.rb +1 -1
  44. data/lib/puppet/functions/rstrip.rb +4 -4
  45. data/lib/puppet/functions/step.rb +1 -1
  46. data/lib/puppet/functions/strip.rb +4 -4
  47. data/lib/puppet/gettext/config.rb +5 -5
  48. data/lib/puppet/gettext/module_translations.rb +4 -4
  49. data/lib/puppet/http.rb +1 -0
  50. data/lib/puppet/http/client.rb +1 -1
  51. data/lib/puppet/http/resolver.rb +5 -8
  52. data/lib/puppet/http/resolver/server_list.rb +18 -36
  53. data/lib/puppet/http/resolver/settings.rb +4 -4
  54. data/lib/puppet/http/resolver/srv.rb +5 -5
  55. data/lib/puppet/http/service.rb +3 -1
  56. data/lib/puppet/http/service/compiler.rb +1 -1
  57. data/lib/puppet/http/service/file_server.rb +1 -1
  58. data/lib/puppet/http/service/puppetserver.rb +39 -0
  59. data/lib/puppet/http/session.rb +5 -4
  60. data/lib/puppet/indirector/catalog/compiler.rb +1 -1
  61. data/lib/puppet/indirector/exec.rb +1 -1
  62. data/lib/puppet/indirector/fact_search.rb +60 -0
  63. data/lib/puppet/indirector/facts/facter.rb +3 -3
  64. data/lib/puppet/indirector/facts/json.rb +27 -0
  65. data/lib/puppet/indirector/facts/yaml.rb +4 -59
  66. data/lib/puppet/indirector/file_metadata/http.rb +1 -0
  67. data/lib/puppet/indirector/hiera.rb +4 -0
  68. data/lib/puppet/indirector/indirection.rb +1 -1
  69. data/lib/puppet/indirector/json.rb +5 -1
  70. data/lib/puppet/indirector/msgpack.rb +1 -1
  71. data/lib/puppet/indirector/node/json.rb +8 -0
  72. data/lib/puppet/indirector/report/json.rb +34 -0
  73. data/lib/puppet/indirector/report/processor.rb +2 -2
  74. data/lib/puppet/indirector/request.rb +4 -4
  75. data/lib/puppet/indirector/yaml.rb +1 -1
  76. data/lib/puppet/module.rb +1 -2
  77. data/lib/puppet/module_tool/applications/installer.rb +48 -2
  78. data/lib/puppet/module_tool/errors/shared.rb +17 -2
  79. data/lib/puppet/network/format_support.rb +2 -2
  80. data/lib/puppet/network/formats.rb +2 -1
  81. data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
  82. data/lib/puppet/network/http/route.rb +2 -2
  83. data/lib/puppet/node/environment.rb +12 -5
  84. data/lib/puppet/node/facts.rb +17 -0
  85. data/lib/puppet/pal/pal_impl.rb +90 -13
  86. data/lib/puppet/parameter.rb +1 -1
  87. data/lib/puppet/parser/ast/leaf.rb +3 -2
  88. data/lib/puppet/parser/functions.rb +21 -17
  89. data/lib/puppet/parser/functions/create_resources.rb +11 -7
  90. data/lib/puppet/parser/templatewrapper.rb +1 -1
  91. data/lib/puppet/parser/type_loader.rb +2 -2
  92. data/lib/puppet/pops/adaptable.rb +7 -13
  93. data/lib/puppet/pops/adapters.rb +8 -4
  94. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
  95. data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
  96. data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -3
  97. data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
  98. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
  99. data/lib/puppet/pops/loaders.rb +18 -11
  100. data/lib/puppet/pops/lookup/context.rb +1 -1
  101. data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
  102. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  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_type_set_type.rb +4 -0
  106. data/lib/puppet/pops/validation/checker4_0.rb +19 -15
  107. data/lib/puppet/property/list.rb +1 -1
  108. data/lib/puppet/provider/file/windows.rb +1 -1
  109. data/lib/puppet/provider/group/groupadd.rb +13 -8
  110. data/lib/puppet/provider/package/apt.rb +67 -1
  111. data/lib/puppet/provider/package/aptitude.rb +6 -0
  112. data/lib/puppet/provider/package/dpkg.rb +1 -1
  113. data/lib/puppet/provider/package/gem.rb +4 -2
  114. data/lib/puppet/provider/package/pip2.rb +17 -0
  115. data/lib/puppet/provider/package/puppet_gem.rb +5 -0
  116. data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
  117. data/lib/puppet/provider/package/yum.rb +1 -0
  118. data/lib/puppet/provider/package/zypper.rb +3 -0
  119. data/lib/puppet/provider/service/debian.rb +2 -0
  120. data/lib/puppet/provider/user/aix.rb +3 -3
  121. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  122. data/lib/puppet/provider/user/useradd.rb +55 -8
  123. data/lib/puppet/provider/user/windows_adsi.rb +18 -1
  124. data/lib/puppet/reference/configuration.rb +6 -5
  125. data/lib/puppet/resource/type.rb +2 -1
  126. data/lib/puppet/rest/route.rb +2 -2
  127. data/lib/puppet/settings.rb +63 -21
  128. data/lib/puppet/settings/alias_setting.rb +37 -0
  129. data/lib/puppet/settings/base_setting.rb +26 -2
  130. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  131. data/lib/puppet/test/test_helper.rb +10 -3
  132. data/lib/puppet/transaction.rb +2 -2
  133. data/lib/puppet/transaction/persistence.rb +1 -1
  134. data/lib/puppet/transaction/report.rb +12 -8
  135. data/lib/puppet/trusted_external.rb +2 -2
  136. data/lib/puppet/type.rb +4 -3
  137. data/lib/puppet/type/file.rb +2 -2
  138. data/lib/puppet/type/file/source.rb +28 -8
  139. data/lib/puppet/type/filebucket.rb +1 -1
  140. data/lib/puppet/type/notify.rb +2 -2
  141. data/lib/puppet/type/package.rb +3 -3
  142. data/lib/puppet/type/service.rb +4 -0
  143. data/lib/puppet/type/user.rb +18 -3
  144. data/lib/puppet/util.rb +26 -12
  145. data/lib/puppet/util/autoload.rb +10 -15
  146. data/lib/puppet/util/character_encoding.rb +9 -5
  147. data/lib/puppet/util/connection.rb +8 -8
  148. data/lib/puppet/util/execution.rb +2 -2
  149. data/lib/puppet/util/fact_dif.rb +62 -0
  150. data/lib/puppet/util/posix.rb +54 -5
  151. data/lib/puppet/util/rubygems.rb +5 -1
  152. data/lib/puppet/util/run_mode.rb +5 -1
  153. data/lib/puppet/util/windows.rb +1 -0
  154. data/lib/puppet/util/windows/api_types.rb +15 -1
  155. data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
  156. data/lib/puppet/util/windows/security.rb +4 -4
  157. data/lib/puppet/util/windows/service.rb +1 -1
  158. data/lib/puppet/util/windows/user.rb +219 -0
  159. data/lib/puppet/version.rb +1 -1
  160. data/locales/puppet.pot +342 -312
  161. data/man/man5/puppet.conf.5 +53 -18
  162. data/man/man8/puppet-agent.8 +7 -4
  163. data/man/man8/puppet-apply.8 +2 -2
  164. data/man/man8/puppet-catalog.8 +1 -1
  165. data/man/man8/puppet-config.8 +6 -6
  166. data/man/man8/puppet-describe.8 +1 -1
  167. data/man/man8/puppet-device.8 +2 -2
  168. data/man/man8/puppet-doc.8 +1 -1
  169. data/man/man8/puppet-epp.8 +1 -1
  170. data/man/man8/puppet-facts.8 +32 -1
  171. data/man/man8/puppet-filebucket.8 +3 -3
  172. data/man/man8/puppet-generate.8 +1 -1
  173. data/man/man8/puppet-help.8 +1 -1
  174. data/man/man8/puppet-key.8 +1 -1
  175. data/man/man8/puppet-lookup.8 +2 -2
  176. data/man/man8/puppet-man.8 +1 -1
  177. data/man/man8/puppet-module.8 +1 -1
  178. data/man/man8/puppet-node.8 +7 -4
  179. data/man/man8/puppet-parser.8 +1 -1
  180. data/man/man8/puppet-plugin.8 +1 -1
  181. data/man/man8/puppet-report.8 +4 -1
  182. data/man/man8/puppet-resource.8 +1 -1
  183. data/man/man8/puppet-script.8 +2 -2
  184. data/man/man8/puppet-ssl.8 +1 -1
  185. data/man/man8/puppet-status.8 +2 -2
  186. data/man/man8/puppet.8 +2 -2
  187. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
  188. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  189. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  190. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  191. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  192. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
  193. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
  194. data/spec/integration/application/agent_spec.rb +208 -55
  195. data/spec/integration/application/apply_spec.rb +168 -149
  196. data/spec/integration/application/doc_spec.rb +16 -6
  197. data/spec/integration/application/filebucket_spec.rb +70 -21
  198. data/spec/integration/application/help_spec.rb +42 -0
  199. data/spec/integration/application/lookup_spec.rb +13 -0
  200. data/spec/integration/application/module_spec.rb +68 -0
  201. data/spec/integration/application/plugin_spec.rb +53 -3
  202. data/spec/integration/configurer_spec.rb +14 -0
  203. data/spec/integration/data_binding_spec.rb +82 -0
  204. data/spec/integration/defaults_spec.rb +19 -1
  205. data/spec/integration/directory_environments_spec.rb +17 -17
  206. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  207. data/spec/integration/indirector/facts/facter_spec.rb +8 -6
  208. data/spec/integration/node/environment_spec.rb +1 -1
  209. data/spec/integration/resource/type_collection_spec.rb +2 -6
  210. data/spec/integration/transaction_spec.rb +4 -9
  211. data/spec/integration/util/execution_spec.rb +22 -0
  212. data/spec/integration/util/windows/adsi_spec.rb +5 -3
  213. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
  214. data/spec/integration/util/windows/process_spec.rb +26 -32
  215. data/spec/integration/util/windows/registry_spec.rb +0 -10
  216. data/spec/integration/util/windows/user_spec.rb +7 -0
  217. data/spec/integration/util_spec.rb +7 -33
  218. data/spec/lib/puppet_spec/matchers.rb +0 -80
  219. data/spec/lib/puppet_spec/puppetserver.rb +8 -0
  220. data/spec/lib/puppet_spec/settings.rb +6 -1
  221. data/spec/shared_contexts/types_setup.rb +2 -0
  222. data/spec/spec_helper.rb +1 -4
  223. data/spec/unit/agent_spec.rb +8 -6
  224. data/spec/unit/application/agent_spec.rb +3 -5
  225. data/spec/unit/application/config_spec.rb +224 -4
  226. data/spec/unit/application/doc_spec.rb +2 -2
  227. data/spec/unit/application/face_base_spec.rb +6 -4
  228. data/spec/unit/application/facts_spec.rb +41 -10
  229. data/spec/unit/application/filebucket_spec.rb +0 -2
  230. data/spec/unit/application/man_spec.rb +52 -0
  231. data/spec/unit/application/resource_spec.rb +3 -1
  232. data/spec/unit/application/ssl_spec.rb +15 -2
  233. data/spec/unit/application_spec.rb +60 -13
  234. data/spec/unit/configurer/downloader_spec.rb +10 -0
  235. data/spec/unit/configurer_spec.rb +86 -37
  236. data/spec/unit/confine/feature_spec.rb +1 -1
  237. data/spec/unit/confine_spec.rb +10 -3
  238. data/spec/unit/defaults_spec.rb +20 -1
  239. data/spec/unit/environments_spec.rb +176 -32
  240. data/spec/unit/face/config_spec.rb +65 -12
  241. data/spec/unit/face/node_spec.rb +2 -13
  242. data/spec/unit/file_serving/configuration/parser_spec.rb +0 -1
  243. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  244. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  245. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  246. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  247. data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
  248. data/spec/unit/file_system/uniquefile_spec.rb +18 -0
  249. data/spec/unit/file_system_spec.rb +1 -2
  250. data/spec/unit/forge/module_release_spec.rb +2 -7
  251. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  252. data/spec/unit/http/client_spec.rb +0 -1
  253. data/spec/unit/http/resolver_spec.rb +24 -5
  254. data/spec/unit/http/service/ca_spec.rb +2 -3
  255. data/spec/unit/http/service/compiler_spec.rb +51 -3
  256. data/spec/unit/http/service/file_server_spec.rb +2 -3
  257. data/spec/unit/http/service/puppetserver_spec.rb +82 -0
  258. data/spec/unit/http/service/report_spec.rb +2 -3
  259. data/spec/unit/http/service_spec.rb +1 -2
  260. data/spec/unit/http/session_spec.rb +8 -21
  261. data/spec/unit/indirector/catalog/json_spec.rb +1 -1
  262. data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
  263. data/spec/unit/indirector/face_spec.rb +0 -1
  264. data/spec/unit/indirector/facts/facter_spec.rb +0 -1
  265. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  266. data/spec/unit/indirector/facts/rest_spec.rb +1 -1
  267. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
  268. data/spec/unit/indirector/indirection_spec.rb +8 -12
  269. data/spec/unit/indirector/json_spec.rb +8 -8
  270. data/spec/unit/indirector/key/file_spec.rb +0 -1
  271. data/spec/unit/indirector/msgpack_spec.rb +8 -8
  272. data/spec/unit/indirector/node/json_spec.rb +33 -0
  273. data/spec/unit/indirector/node/rest_spec.rb +1 -1
  274. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  275. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  276. data/spec/unit/indirector/request_spec.rb +4 -4
  277. data/spec/unit/indirector/rest_spec.rb +1 -1
  278. data/spec/unit/indirector/status/rest_spec.rb +1 -1
  279. data/spec/unit/indirector/yaml_spec.rb +7 -7
  280. data/spec/unit/indirector_spec.rb +2 -2
  281. data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
  282. data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
  283. data/spec/unit/network/authconfig_spec.rb +0 -3
  284. data/spec/unit/network/format_support_spec.rb +3 -2
  285. data/spec/unit/network/http/api/indirected_routes_spec.rb +0 -9
  286. data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
  287. data/spec/unit/network/http/handler_spec.rb +0 -5
  288. data/spec/unit/node/environment_spec.rb +18 -1
  289. data/spec/unit/parser/compiler_spec.rb +3 -19
  290. data/spec/unit/parser/resource_spec.rb +14 -8
  291. data/spec/unit/parser/templatewrapper_spec.rb +4 -3
  292. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
  293. data/spec/unit/pops/loaders/loaders_spec.rb +70 -0
  294. data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
  295. data/spec/unit/property_spec.rb +1 -0
  296. data/spec/unit/provider/exec_spec.rb +4 -3
  297. data/spec/unit/provider/group/groupadd_spec.rb +5 -2
  298. data/spec/unit/provider/nameservice_spec.rb +66 -65
  299. data/spec/unit/provider/package/apt_spec.rb +85 -3
  300. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  301. data/spec/unit/provider/package/base_spec.rb +6 -5
  302. data/spec/unit/provider/package/dpkg_spec.rb +22 -7
  303. data/spec/unit/provider/package/openbsd_spec.rb +2 -0
  304. data/spec/unit/provider/package/pacman_spec.rb +18 -12
  305. data/spec/unit/provider/package/pip2_spec.rb +36 -0
  306. data/spec/unit/provider/package/pip_spec.rb +6 -11
  307. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
  308. data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
  309. data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
  310. data/spec/unit/provider/package/yum_spec.rb +31 -0
  311. data/spec/unit/provider/package/zypper_spec.rb +14 -0
  312. data/spec/unit/provider/service/base_spec.rb +2 -4
  313. data/spec/unit/provider/service/bsd_spec.rb +5 -1
  314. data/spec/unit/provider/service/daemontools_spec.rb +1 -1
  315. data/spec/unit/provider/service/debian_spec.rb +3 -5
  316. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  317. data/spec/unit/provider/service/gentoo_spec.rb +4 -5
  318. data/spec/unit/provider/service/init_spec.rb +45 -5
  319. data/spec/unit/provider/service/launchd_spec.rb +5 -6
  320. data/spec/unit/provider/service/openrc_spec.rb +4 -5
  321. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  322. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  323. data/spec/unit/provider/service/runit_spec.rb +2 -1
  324. data/spec/unit/provider/service/smf_spec.rb +1 -1
  325. data/spec/unit/provider/service/src_spec.rb +3 -5
  326. data/spec/unit/provider/service/systemd_spec.rb +3 -6
  327. data/spec/unit/provider/service/upstart_spec.rb +4 -5
  328. data/spec/unit/provider/service/windows_spec.rb +28 -0
  329. data/spec/unit/provider/user/aix_spec.rb +5 -0
  330. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  331. data/spec/unit/provider/user/pw_spec.rb +2 -0
  332. data/spec/unit/provider/user/useradd_spec.rb +56 -3
  333. data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
  334. data/spec/unit/provider_spec.rb +8 -10
  335. data/spec/unit/puppet_pal_2pec.rb +40 -0
  336. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  337. data/spec/unit/reports/store_spec.rb +17 -13
  338. data/spec/unit/resource/capability_finder_spec.rb +6 -1
  339. data/spec/unit/resource/type_spec.rb +1 -1
  340. data/spec/unit/resource_spec.rb +11 -10
  341. data/spec/unit/rest/route_spec.rb +4 -4
  342. data/spec/unit/settings_spec.rb +576 -239
  343. data/spec/unit/ssl/base_spec.rb +0 -1
  344. data/spec/unit/ssl/host_spec.rb +0 -5
  345. data/spec/unit/ssl/ssl_provider_spec.rb +14 -8
  346. data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
  347. data/spec/unit/transaction/event_manager_spec.rb +14 -11
  348. data/spec/unit/transaction/persistence_spec.rb +15 -0
  349. data/spec/unit/transaction/report_spec.rb +2 -0
  350. data/spec/unit/transaction_spec.rb +13 -4
  351. data/spec/unit/type/file/content_spec.rb +0 -1
  352. data/spec/unit/type/file/selinux_spec.rb +0 -2
  353. data/spec/unit/type/file/source_spec.rb +1 -1
  354. data/spec/unit/type/file_spec.rb +0 -6
  355. data/spec/unit/type/filebucket_spec.rb +1 -1
  356. data/spec/unit/type/group_spec.rb +13 -6
  357. data/spec/unit/type/resources_spec.rb +7 -7
  358. data/spec/unit/type/service_spec.rb +36 -3
  359. data/spec/unit/type/tidy_spec.rb +0 -1
  360. data/spec/unit/type/user_spec.rb +31 -2
  361. data/spec/unit/type_spec.rb +2 -2
  362. data/spec/unit/util/at_fork_spec.rb +2 -2
  363. data/spec/unit/util/autoload_spec.rb +5 -1
  364. data/spec/unit/util/backups_spec.rb +1 -2
  365. data/spec/unit/util/character_encoding_spec.rb +4 -4
  366. data/spec/unit/util/command_line_spec.rb +11 -6
  367. data/spec/unit/util/execution_spec.rb +15 -11
  368. data/spec/unit/util/inifile_spec.rb +6 -14
  369. data/spec/unit/util/log_spec.rb +8 -7
  370. data/spec/unit/util/logging_spec.rb +3 -3
  371. data/spec/unit/util/posix_spec.rb +363 -15
  372. data/spec/unit/util/rubygems_spec.rb +2 -2
  373. data/spec/unit/util/run_mode_spec.rb +6 -6
  374. data/spec/unit/util/selinux_spec.rb +76 -52
  375. data/spec/unit/util/storage_spec.rb +3 -1
  376. data/spec/unit/util/suidmanager_spec.rb +44 -41
  377. data/spec/unit/util_spec.rb +13 -6
  378. metadata +49 -50
  379. data/spec/integration/faces/config_spec.rb +0 -91
  380. data/spec/integration/faces/documentation_spec.rb +0 -57
  381. data/spec/integration/file_bucket/file_spec.rb +0 -50
  382. data/spec/integration/file_serving/content_spec.rb +0 -7
  383. data/spec/integration/file_serving/fileset_spec.rb +0 -12
  384. data/spec/integration/file_serving/metadata_spec.rb +0 -8
  385. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
  386. data/spec/integration/file_system/uniquefile_spec.rb +0 -26
  387. data/spec/integration/module_tool/forge_spec.rb +0 -51
  388. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  389. data/spec/integration/provider/service/init_spec.rb +0 -48
  390. data/spec/integration/provider/service/systemd_spec.rb +0 -25
  391. data/spec/integration/provider/service/windows_spec.rb +0 -50
  392. data/spec/integration/reference/providers_spec.rb +0 -21
  393. data/spec/integration/reports_spec.rb +0 -13
  394. data/spec/integration/ssl/certificate_request_spec.rb +0 -44
  395. data/spec/integration/ssl/host_spec.rb +0 -72
  396. data/spec/integration/ssl/key_spec.rb +0 -99
  397. data/spec/shared_behaviours/file_serving_model.rb +0 -51
  398. data/spec/unit/face/catalog_spec.rb +0 -6
  399. data/spec/unit/face/man_spec.rb +0 -25
  400. data/spec/unit/face/module_spec.rb +0 -3
  401. data/spec/unit/man_spec.rb +0 -31
@@ -32,11 +32,11 @@ Puppet::Indirector::Face.define(:node, '0.0.1') do
32
32
 
33
33
  $ puppet node find somenode.puppetlabs.lan --terminus plain --render-as yaml
34
34
 
35
- Retrieve a node using the puppet master's configured ENC:
35
+ Retrieve a node using the Puppet Server's configured ENC:
36
36
 
37
- $ puppet node find somenode.puppetlabs.lan --terminus exec --run_mode master --render-as yaml
37
+ $ puppet node find somenode.puppetlabs.lan --terminus exec --run_mode server --render-as yaml
38
38
 
39
- Retrieve the same node from the puppet master:
39
+ Retrieve the same node from the Puppet Server:
40
40
 
41
41
  $ puppet node find somenode.puppetlabs.lan --terminus rest --render-as yaml
42
42
  EOT
@@ -26,9 +26,9 @@ Puppet::Face.define(:node, '0.0.1') do
26
26
  # definition, and should not be modifiable beyond that. This is one of
27
27
  # the only places left in the code that tries to manipulate it. Other
28
28
  # parts of code that handle certificates behave differently if the
29
- # run_mode is master. Those other behaviors are needed for cleaning the
29
+ # run_mode is server. Those other behaviors are needed for cleaning the
30
30
  # certificates correctly.
31
- Puppet.settings.preferred_run_mode = "master"
31
+ Puppet.settings.preferred_run_mode = "server"
32
32
 
33
33
  Puppet::Node::Facts.indirection.terminus_class = :yaml
34
34
  Puppet::Node::Facts.indirection.cache_class = :yaml
@@ -26,7 +26,7 @@ Puppet::Indirector::Face.define(:status, '0.0.1') do
26
26
 
27
27
  Over REST, this action will query the configured puppet master by default.
28
28
  To query other servers, including puppet agent nodes started with the
29
- <--listen> option, you can set the global <--server> and <--masterport>
29
+ <--listen> option, you can set the global <--server> and <--serverport>
30
30
  options on the command line; note that agent nodes listen on port 8139.
31
31
  EOT
32
32
  find.short_description <<-EOT
@@ -63,7 +63,7 @@ Puppet.features.add(:manages_symlinks) do
63
63
 
64
64
  true
65
65
  rescue LoadError
66
- Puppet.debug("CreateSymbolicLink is not available")
66
+ Puppet.debug { "CreateSymbolicLink is not available" }
67
67
  false
68
68
  end
69
69
  end
@@ -0,0 +1,10 @@
1
+ require 'ffi'
2
+
3
+ module Puppet
4
+ module FFI
5
+ module POSIX
6
+ require 'puppet/ffi/posix/functions'
7
+ require 'puppet/ffi/posix/constants'
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,14 @@
1
+ require 'puppet/ffi/posix'
2
+
3
+ module Puppet::FFI::POSIX
4
+ module Constants
5
+ extend FFI::Library
6
+
7
+ # Maximum number of supplementary groups (groups
8
+ # that a user can be in plus its primary group)
9
+ # (64 + 1 primary group)
10
+ # Chosen a reasonable middle number from the list
11
+ # https://www.j3e.de/ngroups.html
12
+ MAXIMUM_NUMBER_OF_GROUPS = 65
13
+ end
14
+ end
@@ -0,0 +1,24 @@
1
+ require 'puppet/ffi/posix'
2
+
3
+ module Puppet::FFI::POSIX
4
+ module Functions
5
+
6
+ extend FFI::Library
7
+
8
+ ffi_convention :stdcall
9
+
10
+ # https://man7.org/linux/man-pages/man3/getgrouplist.3.html
11
+ # int getgrouplist (
12
+ # const char *user,
13
+ # gid_t group,
14
+ # gid_t *groups,
15
+ # int *ngroups
16
+ # );
17
+ begin
18
+ ffi_lib FFI::Library::LIBC
19
+ attach_function :getgrouplist, [:string, :uint, :pointer, :pointer], :int
20
+ rescue FFI::NotFoundError
21
+ # Do nothing
22
+ end
23
+ end
24
+ end
@@ -16,7 +16,7 @@ class Puppet::FileBucket::Dipper
16
16
  def initialize(hash = {})
17
17
  # Emulate the XMLRPC client
18
18
  server = hash[:Server]
19
- port = hash[:Port] || Puppet[:masterport]
19
+ port = hash[:Port] || Puppet[:serverport]
20
20
 
21
21
  if hash.include?(:Path)
22
22
  @local_path = hash[:Path]
@@ -17,14 +17,13 @@ class Puppet::FileServing::Mount::Locales < Puppet::FileServing::Mount
17
17
  def search(relative_path, request)
18
18
  # We currently only support one kind of search on locales - return
19
19
  # them all.
20
- Puppet.debug("Warning: calling Locales.search with empty module path.") if request.environment.modules.empty?
21
20
  paths = request.environment.modules.find_all { |mod| mod.locales? }.collect { |mod| mod.locale_directory }
22
21
  if paths.empty?
23
22
  # If the modulepath is valid then we still need to return a valid root
24
23
  # directory for the search, but make sure nothing inside it is
25
24
  # returned.
26
25
  request.options[:recurse] = false
27
- request.environment.modulepath.empty? ? nil : request.environment.modulepath
26
+ request.environment.modulepath.empty? ? [Puppet[:codedir]] : request.environment.modulepath
28
27
  else
29
28
  paths
30
29
  end
@@ -17,14 +17,13 @@ class Puppet::FileServing::Mount::PluginFacts < Puppet::FileServing::Mount
17
17
  def search(relative_path, request)
18
18
  # We currently only support one kind of search on plugins - return
19
19
  # them all.
20
- Puppet.debug("Warning: calling Plugins.search with empty module path.") if request.environment.modules.empty?
21
20
  paths = request.environment.modules.find_all { |mod| mod.pluginfacts? }.collect { |mod| mod.plugin_fact_directory }
22
21
  if paths.empty?
23
22
  # If the modulepath is valid then we still need to return a valid root
24
23
  # directory for the search, but make sure nothing inside it is
25
24
  # returned.
26
25
  request.options[:recurse] = false
27
- request.environment.modulepath.empty? ? nil : request.environment.modulepath
26
+ request.environment.modulepath.empty? ? [Puppet[:codedir]] : request.environment.modulepath
28
27
  else
29
28
  paths
30
29
  end
@@ -17,14 +17,13 @@ class Puppet::FileServing::Mount::Plugins < Puppet::FileServing::Mount
17
17
  def search(relative_path, request)
18
18
  # We currently only support one kind of search on plugins - return
19
19
  # them all.
20
- Puppet.debug("Warning: calling Plugins.search with empty module path.") if request.environment.modules.empty?
21
20
  paths = request.environment.modules.find_all { |mod| mod.plugins? }.collect { |mod| mod.plugin_directory }
22
21
  if paths.empty?
23
22
  # If the modulepath is valid then we still need to return a valid root
24
23
  # directory for the search, but make sure nothing inside it is
25
24
  # returned.
26
25
  request.options[:recurse] = false
27
- request.environment.modulepath.empty? ? nil : request.environment.modulepath
26
+ request.environment.modulepath.empty? ? [Puppet[:codedir]] : request.environment.modulepath
28
27
  else
29
28
  paths
30
29
  end
@@ -54,12 +54,12 @@ class Puppet::FileSystem::FileImpl
54
54
  while !written
55
55
  ::File.open(path, options, mode) do |rf|
56
56
  if rf.flock(::File::LOCK_EX|::File::LOCK_NB)
57
- Puppet.debug(_("Locked '%{path}'") % { path: path })
57
+ Puppet.debug{ _("Locked '%{path}'") % { path: path } }
58
58
  yield rf
59
59
  written = true
60
- Puppet.debug(_("Unlocked '%{path}'") % { path: path })
60
+ Puppet.debug{ _("Unlocked '%{path}'") % { path: path } }
61
61
  else
62
- Puppet.debug("Failed to lock '%s' retrying in %.2f milliseconds" % [path, wait * 1000])
62
+ Puppet.debug{ "Failed to lock '%s' retrying in %.2f milliseconds" % [path, wait * 1000] }
63
63
  sleep wait
64
64
  timeout -= wait
65
65
  wait *= 2
@@ -40,6 +40,7 @@ Puppet::Functions.create_function(:epp, Puppet::Functions::InternalFunction) do
40
40
  scope_param
41
41
  param 'String', :path
42
42
  optional_param 'Hash[Pattern[/^\w+$/], Any]', :parameters
43
+ return_type 'Variant[String, Sensitive[String]]'
43
44
  end
44
45
 
45
46
  def epp(scope, path, parameters = nil)
@@ -51,6 +51,7 @@ Puppet::Functions.create_function(:inline_epp, Puppet::Functions::InternalFuncti
51
51
  scope_param()
52
52
  param 'String', :template
53
53
  optional_param 'Hash[Pattern[/^\w+$/], Any]', :parameters
54
+ return_type 'Variant[String, Sensitive[String]]'
54
55
  end
55
56
 
56
57
  def inline_epp(scope, template, parameters = nil)
@@ -12,15 +12,15 @@
12
12
  #
13
13
  # @example Removing leading space from a String
14
14
  # ```puppet
15
- # "\n\thello".lstrip()
16
- # camelcase("\n\thello")
15
+ # "\n\thello ".lstrip()
16
+ # lstrip("\n\thello ")
17
17
  # ```
18
18
  # Would both result in `"hello"`
19
19
  #
20
20
  # @example Removing leading space from strings in an Array
21
21
  # ```puppet
22
- # ["\n\thello", "\n\thi"].lstrip()
23
- # lstrip(["\n\thello", "\n\thi"])
22
+ # ["\n\thello ", "\n\thi "].lstrip()
23
+ # lstrip(["\n\thello ", "\n\thi "])
24
24
  # ```
25
25
  # Would both result in `['hello', 'hi']`
26
26
  #
@@ -991,12 +991,17 @@ Puppet::Functions.create_function(:new, Puppet::Functions::InternalFunction) do
991
991
 
992
992
  def new_instance(scope, t, *args)
993
993
  return args[0] if args.size == 1 && !t.is_a?(Puppet::Pops::Types::PInitType) && t.instance?(args[0])
994
- result = assert_type(t, new_function_for_type(t, scope).call(scope, *args))
994
+ result = assert_type(t, new_function_for_type(t).call(scope, *args))
995
995
  return block_given? ? yield(result) : result
996
996
  end
997
997
 
998
- def new_function_for_type(t, scope)
999
- @new_function_cache ||= Hash.new() {|hsh, key| hsh[key] = key.new_function.new(scope, loader) }
998
+ def new_function_for_type(t)
999
+ @new_function_cache ||= {}
1000
+
1001
+ unless @new_function_cache.key?(t)
1002
+ @new_function_cache[t] = t.new_function.new(nil, loader)
1003
+ end
1004
+
1000
1005
  @new_function_cache[t]
1001
1006
  end
1002
1007
 
@@ -84,7 +84,7 @@ Puppet::Functions.create_function(:reverse_each) do
84
84
 
85
85
  def reverse_each(iterable)
86
86
  # produces an Iterable
87
- Puppet::Pops::Types::Iterable.asserted_iterable(self, iterable).reverse_each
87
+ Puppet::Pops::Types::Iterable.asserted_iterable(self, iterable, true).reverse_each
88
88
  end
89
89
 
90
90
  def reverse_each_block(iterable, &block)
@@ -12,15 +12,15 @@
12
12
  #
13
13
  # @example Removing trailing space from a String
14
14
  # ```puppet
15
- # "hello\n\t".lstrip()
16
- # camelcase("hello\n\t")
15
+ # " hello\n\t".rstrip()
16
+ # rstrip(" hello\n\t")
17
17
  # ```
18
18
  # Would both result in `"hello"`
19
19
  #
20
20
  # @example Removing trailing space from strings in an Array
21
21
  # ```puppet
22
- # ["hello\n\t", "hi\n\t"].lstrip()
23
- # lstrip(["hello\n\t", "hi\n\t"])
22
+ # [" hello\n\t", " hi\n\t"].rstrip()
23
+ # rstrip([" hello\n\t", " hi\n\t"])
24
24
  # ```
25
25
  # Would both result in `['hello', 'hi']`
26
26
  #
@@ -88,7 +88,7 @@ Puppet::Functions.create_function(:step) do
88
88
 
89
89
  def step(iterable, step)
90
90
  # produces an Iterable
91
- Puppet::Pops::Types::Iterable.asserted_iterable(self, iterable).step(step)
91
+ Puppet::Pops::Types::Iterable.asserted_iterable(self, iterable, true).step(step)
92
92
  end
93
93
 
94
94
  def step_block(iterable, step, &block)
@@ -12,15 +12,15 @@
12
12
  #
13
13
  # @example Removing leading and trailing space from a String
14
14
  # ```puppet
15
- # " hello\n\t".lstrip()
16
- # camelcase(" hello\n\t")
15
+ # " hello\n\t".strip()
16
+ # strip(" hello\n\t")
17
17
  # ```
18
18
  # Would both result in `"hello"`
19
19
  #
20
20
  # @example Removing trailing space from strings in an Array
21
21
  # ```puppet
22
- # [" hello\n\t", " hi\n\t"].lstrip()
23
- # lstrip([" hello\n\t", " hi\n\t"])
22
+ # [" hello\n\t", " hi\n\t"].strip()
23
+ # strip([" hello\n\t", " hi\n\t"])
24
24
  # ```
25
25
  # Would both result in `['hello', 'hi']`
26
26
  #
@@ -65,7 +65,7 @@ module Puppet::GettextConfig
65
65
  return if @gettext_disabled || !gettext_loaded?
66
66
  domain_name = domain_name.to_sym
67
67
 
68
- Puppet.debug "Reset text domain to #{domain_name.inspect}"
68
+ Puppet.debug { "Reset text domain to #{domain_name.inspect}" }
69
69
  FastGettext.add_text_domain(domain_name,
70
70
  type: :chain,
71
71
  chain: [],
@@ -115,10 +115,10 @@ module Puppet::GettextConfig
115
115
  domain_name = domain_name.to_sym
116
116
 
117
117
  if FastGettext.translation_repositories.include?(domain_name)
118
- Puppet.debug "Use text domain #{domain_name.inspect}"
118
+ Puppet.debug { "Use text domain #{domain_name.inspect}" }
119
119
  FastGettext.text_domain = domain_name
120
120
  else
121
- Puppet.debug "Requested unknown text domain #{domain_name.inspect}"
121
+ Puppet.debug { "Requested unknown text domain #{domain_name.inspect}" }
122
122
  end
123
123
  end
124
124
 
@@ -139,10 +139,10 @@ module Puppet::GettextConfig
139
139
 
140
140
  deleted = FastGettext.translation_repositories.delete(domain_name)
141
141
  if FastGettext.text_domain == domain_name
142
- Puppet.debug "Deleted current text domain #{domain_name.inspect}: #{!deleted.nil?}"
142
+ Puppet.debug { "Deleted current text domain #{domain_name.inspect}: #{!deleted.nil?}" }
143
143
  FastGettext.text_domain = nil
144
144
  else
145
- Puppet.debug "Deleted text domain #{domain_name.inspect}: #{!deleted.nil?}"
145
+ Puppet.debug { "Deleted text domain #{domain_name.inspect}: #{!deleted.nil?}" }
146
146
  end
147
147
  end
148
148
 
@@ -13,9 +13,9 @@ module Puppet::ModuleTranslations
13
13
 
14
14
  module_name = mod.forge_name.tr('/', '-')
15
15
  if Puppet::GettextConfig.load_translations(module_name, mod.locale_directory, :po)
16
- Puppet.debug "Loaded translations for #{module_name}."
16
+ Puppet.debug { "Loaded translations for #{module_name}." }
17
17
  elsif Puppet::GettextConfig.gettext_loaded?
18
- Puppet.debug "Could not find translation files for #{module_name} at #{mod.locale_directory}. Skipping translation initialization."
18
+ Puppet.debug { "Could not find translation files for #{module_name} at #{mod.locale_directory}. Skipping translation initialization." }
19
19
  else
20
20
  Puppet.warn_once("gettext_unavailable", "gettext_unavailable", "No gettext library found, skipping translation initialization.")
21
21
  end
@@ -31,9 +31,9 @@ module Puppet::ModuleTranslations
31
31
  Dir.glob("#{vardir}/locales/#{locale}/*.po") do |f|
32
32
  module_name = File.basename(f, ".po")
33
33
  if Puppet::GettextConfig.load_translations(module_name, File.join(vardir, "locales"), :po)
34
- Puppet.debug "Loaded translations for #{module_name}."
34
+ Puppet.debug { "Loaded translations for #{module_name}." }
35
35
  elsif Puppet::GettextConfig.gettext_loaded?
36
- Puppet.debug "Could not load translations for #{module_name}."
36
+ Puppet.debug { "Could not load translations for #{module_name}." }
37
37
  else
38
38
  Puppet.warn_once("gettext_unavailable", "gettext_unavailable", "No gettext library found, skipping translation initialization.")
39
39
  end
data/lib/puppet/http.rb CHANGED
@@ -22,6 +22,7 @@ module Puppet
22
22
  require 'puppet/http/service/ca'
23
23
  require 'puppet/http/service/compiler'
24
24
  require 'puppet/http/service/file_server'
25
+ require 'puppet/http/service/puppetserver'
25
26
  require 'puppet/http/service/report'
26
27
  require 'puppet/http/session'
27
28
  require 'puppet/http/resolver'
@@ -438,7 +438,7 @@ class Puppet::HTTP::Client
438
438
  services.delete(:report)
439
439
  end
440
440
 
441
- resolvers << Puppet::HTTP::Resolver::ServerList.new(self, server_list_setting: server_list_setting, default_port: Puppet[:masterport], services: services)
441
+ resolvers << Puppet::HTTP::Resolver::ServerList.new(self, server_list_setting: server_list_setting, default_port: Puppet[:serverport], services: services)
442
442
  end
443
443
 
444
444
  resolvers << Puppet::HTTP::Resolver::Settings.new(self)
@@ -28,12 +28,12 @@ class Puppet::HTTP::Resolver
28
28
  # @param [Symbol] name the service to resolve
29
29
  # @param [Puppet::SSL::SSLContext] ssl_context (nil) optional ssl context to
30
30
  # use when creating a connection
31
- # @param [Proc] error_handler (nil) optional callback for each error
32
- # encountered while resolving a route.
31
+ # @param [Proc] canceled_handler (nil) optional callback allowing a resolver
32
+ # to cancel resolution.
33
33
  #
34
34
  # @raise [NotImplementedError] this base class is not implemented
35
35
  #
36
- def resolve(session, name, ssl_context: nil, error_handler: nil)
36
+ def resolve(session, name, ssl_context: nil, canceled_handler: nil)
37
37
  raise NotImplementedError
38
38
  end
39
39
 
@@ -45,17 +45,14 @@ class Puppet::HTTP::Resolver
45
45
  # @param [Puppet::HTTP::Session] session
46
46
  # @param [Puppet::HTTP::Service] service
47
47
  # @param [Puppet::SSL::SSLContext] ssl_context
48
- # @param [Proc] error_handler (nil) optional callback for each error
49
- # encountered while resolving a route.
50
48
  #
51
49
  # @return [Boolean] Returns true if a connection is successful, false otherwise
52
50
  #
53
- def check_connection?(session, service, ssl_context: nil, error_handler: nil)
51
+ def check_connection?(session, service, ssl_context: nil)
54
52
  service.connect(ssl_context: ssl_context)
55
53
  return true
56
54
  rescue Puppet::HTTP::ConnectionError => e
57
- error_handler.call(e) if error_handler
58
- Puppet.debug("Connection to #{service.url} failed, trying next route: #{e.message}")
55
+ Puppet.log_exception(e, "Connection to #{service.url} failed, trying next route: #{e.message}")
59
56
  return false
60
57
  end
61
58
  end
@@ -22,7 +22,6 @@ class Puppet::HTTP::Resolver::ServerList < Puppet::HTTP::Resolver
22
22
  @server_list_setting = server_list_setting
23
23
  @default_port = default_port
24
24
  @services = services
25
- @resolved_url = nil
26
25
  end
27
26
 
28
27
  #
@@ -33,8 +32,8 @@ class Puppet::HTTP::Resolver::ServerList < Puppet::HTTP::Resolver
33
32
  # @param [Puppet::HTTP::Session] session <description>
34
33
  # @param [Symbol] name the name of the service being resolved
35
34
  # @param [Puppet::SSL::SSLContext] ssl_context
36
- # @param [Proc] error_handler (nil) optional callback for each error
37
- # encountered while resolving a route.
35
+ # @param [Proc] canceled_handler (nil) optional callback allowing a resolver
36
+ # to cancel resolution.
38
37
  #
39
38
  # @return [nil] return nil if the service to be resolved does not support
40
39
  # server_list
@@ -44,7 +43,7 @@ class Puppet::HTTP::Resolver::ServerList < Puppet::HTTP::Resolver
44
43
  # @raise [Puppet::Error] raise if none of the servers defined in server_list
45
44
  # are available
46
45
  #
47
- def resolve(session, name, ssl_context: nil, error_handler: nil)
46
+ def resolve(session, name, ssl_context: nil, canceled_handler: nil)
48
47
  # If we're configured to use an explicit service host, e.g. report_server
49
48
  # then don't use server_list to resolve the `:report` service.
50
49
  return nil unless @services.include?(name)
@@ -58,41 +57,24 @@ class Puppet::HTTP::Resolver::ServerList < Puppet::HTTP::Resolver
58
57
  @server_list_setting.value.each do |server|
59
58
  host = server[0]
60
59
  port = server[1] || @default_port
61
- uri = URI("https://#{host}:#{port}/status/v1/simple/master")
62
- if get_success?(uri, session, ssl_context: ssl_context, error_handler: error_handler)
63
- @resolved_url = uri
64
- return Puppet::HTTP::Service.create_service(@client, session, name, host, port)
60
+
61
+ service = Puppet::HTTP::Service.create_service(@client, session, :puppetserver, host, port)
62
+ begin
63
+ service.get_simple_status(ssl_context: ssl_context)
64
+ @resolved_url = service.url
65
+ return Puppet::HTTP::Service.create_service(@client, session, name, @resolved_url.host, @resolved_url.port)
66
+ rescue Puppet::HTTP::ResponseError => detail
67
+ Puppet.log_exception(detail, _("Puppet server %{host}:%{port} is unavailable: %{code} %{reason}") %
68
+ { host: service.url.host, port: service.url.port, code: detail.response.code, reason: detail.response.reason })
69
+ rescue Puppet::HTTP::HTTPError => detail
70
+ Puppet.log_exception(detail, _("Unable to connect to server from server_list setting: %{detail}") % {detail: detail})
65
71
  end
66
72
  end
67
73
 
68
- raise Puppet::Error, _("Could not select a functional puppet master from server_list: '%{server_list}'") % { server_list: @server_list_setting.print(@server_list_setting.value) }
69
- end
70
-
71
- #
72
- # @api private
73
- #
74
- # Check if a server and port is available
75
- #
76
- # @param [URI] uri A URI created from the server and port to test
77
- # @param [Puppet::HTTP::Session] session
78
- # @param [Puppet::SSL::SSLContext] ssl_context
79
- # @param [Proc] error_handler (nil) optional callback for each error
80
- # encountered while resolving a route.
81
- #
82
- # @return [Boolean] true if a successful response is returned by the server,
83
- # false otherwise
84
- #
85
- def get_success?(uri, session, ssl_context: nil, error_handler: nil)
86
- response = @client.get(uri, options: {ssl_context: ssl_context})
87
- return true if response.success?
74
+ # don't fallback to other resolvers
75
+ canceled_handler.call(true) if canceled_handler
88
76
 
89
- Puppet.debug(_("Puppet server %{host}:%{port} is unavailable: %{code} %{reason}") %
90
- { host: uri.host, port: uri.port, code: response.code, reason: response.reason })
91
- return false
92
- rescue => detail
93
- error_handler.call(detail) if error_handler
94
- #TRANSLATORS 'server_list' is the name of a setting and should not be translated
95
- Puppet.debug _("Unable to connect to server from server_list setting: %{detail}") % {detail: detail}
96
- return false
77
+ # not found
78
+ nil
97
79
  end
98
80
  end