puppet 6.19.0-x86-mingw32 → 7.3.0-x86-mingw32

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 (513) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -16
  3. data/Gemfile +3 -4
  4. data/Gemfile.lock +33 -28
  5. data/README.md +1 -1
  6. data/conf/fileserver.conf +5 -10
  7. data/ext/build_defaults.yaml +1 -1
  8. data/ext/osx/file_mapping.yaml +0 -5
  9. data/ext/project_data.yaml +2 -14
  10. data/ext/redhat/puppet.spec.erb +0 -1
  11. data/ext/windows/service/daemon.rb +6 -5
  12. data/install.rb +21 -17
  13. data/lib/puppet.rb +11 -20
  14. data/lib/puppet/application.rb +182 -104
  15. data/lib/puppet/application/agent.rb +1 -0
  16. data/lib/puppet/application/apply.rb +3 -2
  17. data/lib/puppet/application/device.rb +101 -104
  18. data/lib/puppet/application/filebucket.rb +15 -11
  19. data/lib/puppet/application/script.rb +1 -0
  20. data/lib/puppet/application/ssl.rb +1 -1
  21. data/lib/puppet/application_support.rb +7 -0
  22. data/lib/puppet/configurer.rb +44 -36
  23. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  24. data/lib/puppet/defaults.rb +71 -170
  25. data/lib/puppet/environments.rb +44 -75
  26. data/lib/puppet/face/config.rb +10 -0
  27. data/lib/puppet/face/epp.rb +12 -2
  28. data/lib/puppet/face/facts.rb +80 -6
  29. data/lib/puppet/face/help.rb +1 -1
  30. data/lib/puppet/face/node/clean.rb +8 -0
  31. data/lib/puppet/face/plugin.rb +5 -8
  32. data/lib/puppet/ffi/posix.rb +10 -0
  33. data/lib/puppet/ffi/posix/constants.rb +14 -0
  34. data/lib/puppet/ffi/posix/functions.rb +24 -0
  35. data/lib/puppet/ffi/windows.rb +12 -0
  36. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  37. data/lib/puppet/ffi/windows/constants.rb +404 -0
  38. data/lib/puppet/ffi/windows/functions.rb +628 -0
  39. data/lib/puppet/ffi/windows/structs.rb +338 -0
  40. data/lib/puppet/file_serving/configuration.rb +0 -5
  41. data/lib/puppet/file_serving/configuration/parser.rb +6 -32
  42. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  43. data/lib/puppet/file_serving/mount.rb +1 -2
  44. data/lib/puppet/forge/repository.rb +0 -1
  45. data/lib/puppet/functions/epp.rb +1 -0
  46. data/lib/puppet/functions/inline_epp.rb +1 -0
  47. data/lib/puppet/generate/models/type/type.rb +4 -1
  48. data/lib/puppet/http.rb +22 -13
  49. data/lib/puppet/http/client.rb +164 -114
  50. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  51. data/lib/puppet/http/errors.rb +16 -0
  52. data/lib/puppet/http/external_client.rb +5 -7
  53. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  54. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  55. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  56. data/lib/puppet/http/proxy.rb +137 -0
  57. data/lib/puppet/http/redirector.rb +4 -12
  58. data/lib/puppet/http/resolver.rb +5 -15
  59. data/lib/puppet/http/resolver/server_list.rb +6 -10
  60. data/lib/puppet/http/resolver/settings.rb +4 -7
  61. data/lib/puppet/http/resolver/srv.rb +7 -11
  62. data/lib/puppet/http/response.rb +36 -54
  63. data/lib/puppet/http/response_converter.rb +24 -0
  64. data/lib/puppet/http/response_net_http.rb +42 -0
  65. data/lib/puppet/http/retry_after_handler.rb +4 -13
  66. data/lib/puppet/http/service.rb +12 -26
  67. data/lib/puppet/http/service/ca.rb +11 -22
  68. data/lib/puppet/http/service/compiler.rb +22 -69
  69. data/lib/puppet/http/service/file_server.rb +18 -27
  70. data/lib/puppet/http/service/puppetserver.rb +26 -12
  71. data/lib/puppet/http/service/report.rb +8 -10
  72. data/lib/puppet/http/session.rb +11 -20
  73. data/lib/puppet/{network/http → http}/site.rb +1 -2
  74. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  75. data/lib/puppet/indirector/fact_search.rb +60 -0
  76. data/lib/puppet/indirector/facts/facter.rb +24 -3
  77. data/lib/puppet/indirector/facts/json.rb +27 -0
  78. data/lib/puppet/indirector/facts/rest.rb +3 -22
  79. data/lib/puppet/indirector/facts/yaml.rb +3 -58
  80. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  81. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  82. data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
  83. data/lib/puppet/indirector/file_server.rb +1 -8
  84. data/lib/puppet/indirector/generic_http.rb +0 -11
  85. data/lib/puppet/indirector/json.rb +5 -1
  86. data/lib/puppet/indirector/node/json.rb +8 -0
  87. data/lib/puppet/indirector/node/rest.rb +2 -4
  88. data/lib/puppet/indirector/report/json.rb +34 -0
  89. data/lib/puppet/indirector/report/rest.rb +3 -8
  90. data/lib/puppet/indirector/request.rb +0 -101
  91. data/lib/puppet/indirector/rest.rb +12 -263
  92. data/lib/puppet/module_tool/applications.rb +0 -1
  93. data/lib/puppet/module_tool/applications/installer.rb +48 -2
  94. data/lib/puppet/module_tool/errors/shared.rb +17 -2
  95. data/lib/puppet/network/authconfig.rb +2 -96
  96. data/lib/puppet/network/authorization.rb +13 -35
  97. data/lib/puppet/network/formats.rb +69 -1
  98. data/lib/puppet/network/http.rb +3 -3
  99. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  100. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  101. data/lib/puppet/network/http/connection.rb +247 -316
  102. data/lib/puppet/network/http/handler.rb +0 -1
  103. data/lib/puppet/network/http_pool.rb +16 -34
  104. data/lib/puppet/node.rb +1 -30
  105. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  106. data/lib/puppet/pal/pal_impl.rb +73 -18
  107. data/lib/puppet/parser/ast/leaf.rb +3 -2
  108. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  109. data/lib/puppet/parser/compiler.rb +0 -198
  110. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  111. data/lib/puppet/parser/resource.rb +0 -69
  112. data/lib/puppet/parser/templatewrapper.rb +1 -1
  113. data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
  114. data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -8
  115. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  116. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  117. data/lib/puppet/pops/issues.rb +0 -5
  118. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  119. data/lib/puppet/pops/model/ast.pp +0 -42
  120. data/lib/puppet/pops/model/ast.rb +0 -290
  121. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  122. data/lib/puppet/pops/model/factory.rb +0 -45
  123. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  124. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  125. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  126. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  127. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  128. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  129. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  130. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  131. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  132. data/lib/puppet/pops/types/type_parser.rb +0 -4
  133. data/lib/puppet/pops/types/types.rb +0 -1
  134. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  135. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  136. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  137. data/lib/puppet/provider.rb +0 -13
  138. data/lib/puppet/provider/nameservice.rb +0 -18
  139. data/lib/puppet/provider/package/apt.rb +4 -0
  140. data/lib/puppet/provider/package/dpkg.rb +0 -10
  141. data/lib/puppet/provider/package/gem.rb +23 -3
  142. data/lib/puppet/provider/package/pip.rb +0 -1
  143. data/lib/puppet/provider/package/pkg.rb +0 -4
  144. data/lib/puppet/provider/package/portage.rb +1 -1
  145. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  146. data/lib/puppet/provider/service/smf.rb +191 -73
  147. data/lib/puppet/provider/user/aix.rb +2 -2
  148. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  149. data/lib/puppet/reference/configuration.rb +8 -5
  150. data/lib/puppet/reference/indirection.rb +1 -1
  151. data/lib/puppet/resource.rb +1 -89
  152. data/lib/puppet/resource/catalog.rb +1 -14
  153. data/lib/puppet/resource/type.rb +3 -119
  154. data/lib/puppet/resource/type_collection.rb +3 -48
  155. data/lib/puppet/runtime.rb +1 -2
  156. data/lib/puppet/settings.rb +88 -48
  157. data/lib/puppet/settings/alias_setting.rb +37 -0
  158. data/lib/puppet/settings/base_setting.rb +26 -2
  159. data/lib/puppet/settings/integer_setting.rb +17 -0
  160. data/lib/puppet/settings/port_setting.rb +15 -0
  161. data/lib/puppet/settings/priority_setting.rb +5 -4
  162. data/lib/puppet/ssl.rb +10 -6
  163. data/lib/puppet/ssl/base.rb +3 -5
  164. data/lib/puppet/ssl/certificate.rb +0 -6
  165. data/lib/puppet/ssl/certificate_request.rb +1 -12
  166. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  167. data/lib/puppet/ssl/oids.rb +3 -1
  168. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  169. data/lib/puppet/ssl/state_machine.rb +3 -1
  170. data/lib/puppet/ssl/verifier.rb +2 -0
  171. data/lib/puppet/test/test_helper.rb +1 -3
  172. data/lib/puppet/transaction.rb +1 -7
  173. data/lib/puppet/transaction/report.rb +2 -4
  174. data/lib/puppet/type.rb +0 -76
  175. data/lib/puppet/type/file.rb +5 -7
  176. data/lib/puppet/type/file/checksum.rb +1 -1
  177. data/lib/puppet/type/file/source.rb +1 -1
  178. data/lib/puppet/type/filebucket.rb +3 -3
  179. data/lib/puppet/type/package.rb +5 -13
  180. data/lib/puppet/type/user.rb +1 -1
  181. data/lib/puppet/util/autoload.rb +1 -8
  182. data/lib/puppet/util/execution.rb +0 -11
  183. data/lib/puppet/util/http_proxy.rb +2 -215
  184. data/lib/puppet/util/monkey_patches.rb +0 -46
  185. data/lib/puppet/util/posix.rb +54 -5
  186. data/lib/puppet/util/rdoc.rb +0 -7
  187. data/lib/puppet/util/retry_action.rb +1 -1
  188. data/lib/puppet/util/rubygems.rb +5 -1
  189. data/lib/puppet/util/run_mode.rb +9 -1
  190. data/lib/puppet/util/windows.rb +3 -8
  191. data/lib/puppet/util/windows/daemon.rb +360 -0
  192. data/lib/puppet/util/windows/error.rb +1 -0
  193. data/lib/puppet/util/windows/eventlog.rb +4 -9
  194. data/lib/puppet/util/windows/file.rb +8 -242
  195. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  196. data/lib/puppet/util/windows/process.rb +4 -226
  197. data/lib/puppet/util/windows/service.rb +9 -460
  198. data/lib/puppet/util/windows/string.rb +12 -13
  199. data/lib/puppet/util/yaml.rb +0 -22
  200. data/lib/puppet/vendor/require_vendored.rb +0 -1
  201. data/lib/puppet/version.rb +1 -1
  202. data/lib/puppet/x509.rb +5 -1
  203. data/lib/puppet/x509/cert_provider.rb +29 -1
  204. data/locales/puppet.pot +629 -1314
  205. data/man/man5/puppet.conf.5 +39 -99
  206. data/man/man8/puppet-agent.8 +2 -2
  207. data/man/man8/puppet-apply.8 +2 -2
  208. data/man/man8/puppet-catalog.8 +1 -1
  209. data/man/man8/puppet-config.8 +1 -1
  210. data/man/man8/puppet-describe.8 +1 -1
  211. data/man/man8/puppet-device.8 +2 -2
  212. data/man/man8/puppet-doc.8 +1 -1
  213. data/man/man8/puppet-epp.8 +1 -1
  214. data/man/man8/puppet-facts.8 +58 -9
  215. data/man/man8/puppet-filebucket.8 +6 -6
  216. data/man/man8/puppet-generate.8 +1 -1
  217. data/man/man8/puppet-help.8 +1 -1
  218. data/man/man8/puppet-lookup.8 +1 -1
  219. data/man/man8/puppet-module.8 +1 -58
  220. data/man/man8/puppet-node.8 +4 -1
  221. data/man/man8/puppet-parser.8 +1 -1
  222. data/man/man8/puppet-plugin.8 +1 -1
  223. data/man/man8/puppet-report.8 +4 -1
  224. data/man/man8/puppet-resource.8 +1 -1
  225. data/man/man8/puppet-script.8 +2 -2
  226. data/man/man8/puppet-ssl.8 +1 -1
  227. data/man/man8/puppet.8 +2 -2
  228. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
  229. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  230. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
  231. data/spec/integration/application/agent_spec.rb +151 -14
  232. data/spec/integration/application/apply_spec.rb +20 -1
  233. data/spec/integration/application/filebucket_spec.rb +16 -16
  234. data/spec/integration/application/help_spec.rb +2 -0
  235. data/spec/integration/application/plugin_spec.rb +23 -1
  236. data/spec/integration/defaults_spec.rb +7 -10
  237. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  238. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -2
  239. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -2
  240. data/spec/integration/network/http_pool_spec.rb +3 -21
  241. data/spec/integration/parser/catalog_spec.rb +0 -38
  242. data/spec/integration/parser/node_spec.rb +0 -9
  243. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  244. data/spec/integration/resource/type_collection_spec.rb +2 -6
  245. data/spec/integration/transaction_spec.rb +4 -9
  246. data/spec/integration/type/file_spec.rb +5 -4
  247. data/spec/integration/util/windows/adsi_spec.rb +3 -1
  248. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  249. data/spec/integration/util/windows/registry_spec.rb +0 -10
  250. data/spec/integration/util/windows/security_spec.rb +1 -1
  251. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  252. data/spec/lib/puppet_spec/settings.rb +7 -1
  253. data/spec/spec_helper.rb +3 -4
  254. data/spec/unit/agent_spec.rb +8 -8
  255. data/spec/unit/application/agent_spec.rb +0 -1
  256. data/spec/unit/application/config_spec.rb +224 -4
  257. data/spec/unit/application/facts_spec.rb +35 -0
  258. data/spec/unit/application/filebucket_spec.rb +41 -41
  259. data/spec/unit/application/ssl_spec.rb +2 -2
  260. data/spec/unit/application_spec.rb +51 -9
  261. data/spec/unit/certificate_factory_spec.rb +1 -1
  262. data/spec/unit/configurer/downloader_spec.rb +6 -2
  263. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  264. data/spec/unit/configurer_spec.rb +12 -9
  265. data/spec/unit/confine/feature_spec.rb +1 -1
  266. data/spec/unit/confine_spec.rb +8 -2
  267. data/spec/unit/context/trusted_information_spec.rb +2 -6
  268. data/spec/unit/defaults_spec.rb +26 -32
  269. data/spec/unit/environments_spec.rb +96 -22
  270. data/spec/unit/face/config_spec.rb +27 -32
  271. data/spec/unit/face/facts_spec.rb +4 -0
  272. data/spec/unit/face/node_spec.rb +14 -13
  273. data/spec/unit/face/plugin_spec.rb +73 -33
  274. data/spec/unit/file_bucket/file_spec.rb +1 -1
  275. data/spec/unit/file_serving/configuration/parser_spec.rb +22 -19
  276. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  277. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  278. data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
  279. data/spec/unit/forge/module_release_spec.rb +2 -7
  280. data/spec/unit/functions/camelcase_spec.rb +1 -1
  281. data/spec/unit/functions/capitalize_spec.rb +1 -1
  282. data/spec/unit/functions/downcase_spec.rb +1 -1
  283. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  284. data/spec/unit/functions/upcase_spec.rb +1 -1
  285. data/spec/unit/http/client_spec.rb +7 -8
  286. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  287. data/spec/unit/http/external_client_spec.rb +4 -4
  288. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  289. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  290. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  291. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  292. data/spec/unit/http/resolver_spec.rb +13 -13
  293. data/spec/unit/http/service/compiler_spec.rb +49 -62
  294. data/spec/unit/http/service/file_server_spec.rb +3 -3
  295. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  296. data/spec/unit/http/service_spec.rb +1 -2
  297. data/spec/unit/http/session_spec.rb +16 -14
  298. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  299. data/spec/unit/indirector/face_spec.rb +0 -1
  300. data/spec/unit/indirector/facts/facter_spec.rb +104 -1
  301. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  302. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  303. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
  304. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  305. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  306. data/spec/unit/indirector/file_server_spec.rb +1 -15
  307. data/spec/unit/indirector/indirection_spec.rb +8 -12
  308. data/spec/unit/indirector/node/json_spec.rb +33 -0
  309. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  310. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  311. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  312. data/spec/unit/indirector/request_spec.rb +0 -264
  313. data/spec/unit/indirector/rest_spec.rb +98 -752
  314. data/spec/unit/indirector_spec.rb +2 -2
  315. data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
  316. data/spec/unit/network/authconfig_spec.rb +2 -132
  317. data/spec/unit/network/authorization_spec.rb +2 -55
  318. data/spec/unit/network/formats_spec.rb +45 -4
  319. data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -101
  320. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  321. data/spec/unit/network/http/api_spec.rb +10 -0
  322. data/spec/unit/network/http/connection_spec.rb +19 -41
  323. data/spec/unit/network/http/handler_spec.rb +0 -6
  324. data/spec/unit/network/http_pool_spec.rb +0 -4
  325. data/spec/unit/node/environment_spec.rb +33 -21
  326. data/spec/unit/node_spec.rb +2 -54
  327. data/spec/unit/parser/compiler_spec.rb +3 -19
  328. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  329. data/spec/unit/parser/resource_spec.rb +14 -8
  330. data/spec/unit/parser/templatewrapper_spec.rb +4 -3
  331. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
  332. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  333. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  334. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  335. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  336. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  337. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  338. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  339. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  340. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  341. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  342. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  343. data/spec/unit/pops/visitor_spec.rb +1 -1
  344. data/spec/unit/property_spec.rb +1 -0
  345. data/spec/unit/provider/nameservice_spec.rb +66 -122
  346. data/spec/unit/provider/package/apt_spec.rb +4 -8
  347. data/spec/unit/provider/package/base_spec.rb +6 -5
  348. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  349. data/spec/unit/provider/package/gem_spec.rb +32 -0
  350. data/spec/unit/provider/package/pacman_spec.rb +18 -12
  351. data/spec/unit/provider/package/pip_spec.rb +6 -11
  352. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
  353. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  354. data/spec/unit/provider/service/smf_spec.rb +401 -165
  355. data/spec/unit/provider/service/windows_spec.rb +0 -1
  356. data/spec/unit/provider/user/aix_spec.rb +5 -0
  357. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  358. data/spec/unit/provider/user/pw_spec.rb +2 -0
  359. data/spec/unit/provider/user/useradd_spec.rb +1 -0
  360. data/spec/unit/provider_spec.rb +6 -20
  361. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  362. data/spec/unit/resource/type_collection_spec.rb +2 -22
  363. data/spec/unit/resource/type_spec.rb +1 -1
  364. data/spec/unit/resource_spec.rb +11 -66
  365. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  366. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  367. data/spec/unit/settings/port_setting_spec.rb +31 -0
  368. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  369. data/spec/unit/settings_spec.rb +560 -228
  370. data/spec/unit/ssl/base_spec.rb +36 -4
  371. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  372. data/spec/unit/ssl/certificate_spec.rb +2 -11
  373. data/spec/unit/ssl/ssl_provider_spec.rb +14 -8
  374. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  375. data/spec/unit/ssl/verifier_spec.rb +0 -21
  376. data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
  377. data/spec/unit/transaction/event_manager_spec.rb +14 -11
  378. data/spec/unit/transaction/report_spec.rb +0 -2
  379. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  380. data/spec/unit/transaction_spec.rb +57 -82
  381. data/spec/unit/type/file/checksum_spec.rb +6 -6
  382. data/spec/unit/type/file/content_spec.rb +1 -2
  383. data/spec/unit/type/file/ensure_spec.rb +1 -1
  384. data/spec/unit/type/file/mode_spec.rb +1 -1
  385. data/spec/unit/type/file/selinux_spec.rb +0 -2
  386. data/spec/unit/type/file/source_spec.rb +0 -1
  387. data/spec/unit/type/file_spec.rb +12 -12
  388. data/spec/unit/type/group_spec.rb +13 -6
  389. data/spec/unit/type/package_spec.rb +1 -1
  390. data/spec/unit/type/resources_spec.rb +7 -7
  391. data/spec/unit/type/service_spec.rb +1 -1
  392. data/spec/unit/type/tidy_spec.rb +0 -1
  393. data/spec/unit/type_spec.rb +22 -2
  394. data/spec/unit/util/at_fork_spec.rb +2 -2
  395. data/spec/unit/util/autoload_spec.rb +5 -1
  396. data/spec/unit/util/backups_spec.rb +1 -4
  397. data/spec/unit/util/execution_spec.rb +15 -40
  398. data/spec/unit/util/inifile_spec.rb +6 -14
  399. data/spec/unit/util/log_spec.rb +8 -7
  400. data/spec/unit/util/logging_spec.rb +3 -3
  401. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  402. data/spec/unit/util/posix_spec.rb +363 -15
  403. data/spec/unit/util/rubygems_spec.rb +2 -2
  404. data/spec/unit/util/run_mode_spec.rb +21 -121
  405. data/spec/unit/util/selinux_spec.rb +76 -52
  406. data/spec/unit/util/storage_spec.rb +3 -1
  407. data/spec/unit/util/suidmanager_spec.rb +44 -41
  408. data/spec/unit/util/windows/string_spec.rb +1 -3
  409. data/spec/unit/util/yaml_spec.rb +0 -54
  410. data/spec/unit/util_spec.rb +13 -24
  411. metadata +66 -226
  412. data/conf/auth.conf +0 -150
  413. data/lib/puppet/application/cert.rb +0 -76
  414. data/lib/puppet/application/key.rb +0 -4
  415. data/lib/puppet/application/man.rb +0 -4
  416. data/lib/puppet/application/status.rb +0 -4
  417. data/lib/puppet/face/key.rb +0 -16
  418. data/lib/puppet/face/man.rb +0 -145
  419. data/lib/puppet/face/module/build.rb +0 -14
  420. data/lib/puppet/face/module/generate.rb +0 -14
  421. data/lib/puppet/face/module/search.rb +0 -103
  422. data/lib/puppet/face/status.rb +0 -51
  423. data/lib/puppet/indirector/certificate/file.rb +0 -9
  424. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  425. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  426. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  427. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  428. data/lib/puppet/indirector/file_content/http.rb +0 -22
  429. data/lib/puppet/indirector/key/file.rb +0 -46
  430. data/lib/puppet/indirector/key/memory.rb +0 -7
  431. data/lib/puppet/indirector/ssl_file.rb +0 -162
  432. data/lib/puppet/indirector/status.rb +0 -3
  433. data/lib/puppet/indirector/status/local.rb +0 -12
  434. data/lib/puppet/indirector/status/rest.rb +0 -27
  435. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  436. data/lib/puppet/network/auth_config_parser.rb +0 -90
  437. data/lib/puppet/network/authstore.rb +0 -283
  438. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  439. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  440. data/lib/puppet/network/http/base_pool.rb +0 -36
  441. data/lib/puppet/network/http/compression.rb +0 -127
  442. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  443. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  444. data/lib/puppet/network/rest_controller.rb +0 -2
  445. data/lib/puppet/network/rights.rb +0 -210
  446. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  447. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  448. data/lib/puppet/parser/environment_compiler.rb +0 -202
  449. data/lib/puppet/pops/types/enumeration.rb +0 -16
  450. data/lib/puppet/resource/capability_finder.rb +0 -154
  451. data/lib/puppet/rest/errors.rb +0 -15
  452. data/lib/puppet/rest/response.rb +0 -35
  453. data/lib/puppet/rest/route.rb +0 -85
  454. data/lib/puppet/rest/routes.rb +0 -135
  455. data/lib/puppet/ssl/host.rb +0 -505
  456. data/lib/puppet/ssl/key.rb +0 -61
  457. data/lib/puppet/ssl/validator.rb +0 -61
  458. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  459. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  460. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  461. data/lib/puppet/status.rb +0 -40
  462. data/lib/puppet/util/connection.rb +0 -88
  463. data/lib/puppet/util/ssl.rb +0 -83
  464. data/lib/puppet/util/windows/api_types.rb +0 -309
  465. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  466. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  467. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  468. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  469. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  470. data/lib/puppet/vendor/pathspec/README.md +0 -53
  471. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  472. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  473. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  474. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  475. data/man/man8/puppet-key.8 +0 -126
  476. data/man/man8/puppet-man.8 +0 -76
  477. data/man/man8/puppet-status.8 +0 -108
  478. data/spec/integration/application/config_spec.rb +0 -74
  479. data/spec/integration/network/authconfig_spec.rb +0 -256
  480. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  481. data/spec/unit/application/man_spec.rb +0 -52
  482. data/spec/unit/capability_spec.rb +0 -414
  483. data/spec/unit/face/catalog_spec.rb +0 -6
  484. data/spec/unit/face/key_spec.rb +0 -9
  485. data/spec/unit/face/module/search_spec.rb +0 -231
  486. data/spec/unit/face/module_spec.rb +0 -3
  487. data/spec/unit/face/status_spec.rb +0 -9
  488. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  489. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  490. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  491. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  492. data/spec/unit/indirector/key/file_spec.rb +0 -79
  493. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  494. data/spec/unit/indirector/status/local_spec.rb +0 -10
  495. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  496. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  497. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  498. data/spec/unit/network/authstore_spec.rb +0 -422
  499. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  500. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  501. data/spec/unit/network/http/compression_spec.rb +0 -240
  502. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  503. data/spec/unit/network/http_spec.rb +0 -9
  504. data/spec/unit/network/rights_spec.rb +0 -439
  505. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  506. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  507. data/spec/unit/resource/capability_finder_spec.rb +0 -143
  508. data/spec/unit/rest/route_spec.rb +0 -132
  509. data/spec/unit/ssl/host_spec.rb +0 -650
  510. data/spec/unit/ssl/key_spec.rb +0 -173
  511. data/spec/unit/ssl/validator_spec.rb +0 -278
  512. data/spec/unit/status_spec.rb +0 -45
  513. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -346,12 +346,6 @@ module Puppet::Environments
346
346
  @loader = loader
347
347
  @cache_expiration_service = Puppet::Environments::Cached.cache_expiration_service
348
348
  @cache = {}
349
-
350
- # Holds expiration times in sorted order - next to expire is first
351
- @expirations = SortedSet.new
352
-
353
- # Infinity since it there are no entries, this is a cache of the first to expire time
354
- @next_expiration = END_OF_TIME
355
349
  end
356
350
 
357
351
  # @!macro loader_list
@@ -379,7 +373,6 @@ module Puppet::Environments
379
373
  elsif (result = @loader.get(name))
380
374
  # environment loaded, cache it
381
375
  cache_entry = entry(result)
382
- @cache_expiration_service.created(result)
383
376
  add_entry(name, cache_entry)
384
377
  result
385
378
  end
@@ -389,28 +382,36 @@ module Puppet::Environments
389
382
  def add_entry(name, cache_entry)
390
383
  Puppet.debug {"Caching environment '#{name}' #{cache_entry.label}"}
391
384
  @cache[name] = cache_entry
392
- expires = cache_entry.expires
393
- @expirations.add(expires)
394
- if @next_expiration > expires
395
- @next_expiration = expires
396
- end
385
+ @cache_expiration_service.created(cache_entry.value)
397
386
  end
398
387
  private :add_entry
399
388
 
389
+ def clear_entry(name, entry)
390
+ @cache.delete(name)
391
+ Puppet.debug {"Evicting cache entry for environment '#{name}'"}
392
+ @cache_expiration_service.evicted(name.to_sym)
393
+ Puppet::GettextConfig.delete_text_domain(name)
394
+ Puppet.settings.clear_environment_settings(name)
395
+ end
396
+ private :clear_entry
397
+
400
398
  # Clears the cache of the environment with the given name.
401
399
  # (The intention is that this could be used from a MANUAL cache eviction command (TBD)
402
400
  def clear(name)
403
- @cache.delete(name)
404
- Puppet::GettextConfig.delete_text_domain(name)
401
+ entry = @cache[name]
402
+ clear_entry(name, entry) if entry
405
403
  end
406
404
 
407
405
  # Clears all cached environments.
408
406
  # (The intention is that this could be used from a MANUAL cache eviction command (TBD)
409
- def clear_all()
407
+ def clear_all
410
408
  super
409
+
410
+ @cache.each_pair do |name, entry|
411
+ clear_entry(name, entry)
412
+ end
413
+
411
414
  @cache = {}
412
- @expirations.clear
413
- @next_expiration = END_OF_TIME
414
415
  Puppet::GettextConfig.delete_environment_text_domains
415
416
  end
416
417
 
@@ -419,18 +420,24 @@ module Puppet::Environments
419
420
  #
420
421
  def clear_all_expired()
421
422
  t = Time.now
422
- return if t < @next_expiration && ! @cache.any? {|name, _| @cache_expiration_service.expired?(name.to_sym) }
423
- to_expire = @cache.select { |name, entry| entry.expires < t || @cache_expiration_service.expired?(name.to_sym) }
424
- to_expire.each do |name, entry|
425
- Puppet.debug {"Evicting cache entry for environment '#{name}'"}
426
- @cache_expiration_service.evicted(name.to_sym)
427
- clear(name)
428
- @expirations.delete(entry.expires)
429
- Puppet.settings.clear_environment_settings(name)
423
+
424
+ @cache.each_pair do |name, entry|
425
+ clear_if_expired(name, entry, t)
430
426
  end
431
- @next_expiration = @expirations.first || END_OF_TIME
432
427
  end
433
428
 
429
+ # Clear an environment if it is expired, either by exceeding its time to live, or
430
+ # through an explicit eviction determined by the cache expiration service.
431
+ #
432
+ def clear_if_expired(name, entry, t = Time.now)
433
+ return unless entry
434
+
435
+ if entry.expired?(t) || @cache_expiration_service.expired?(name.to_sym)
436
+ clear_entry(name, entry)
437
+ end
438
+ end
439
+ private :clear_if_expired
440
+
434
441
  # This implementation evicts the cache, and always gets the current
435
442
  # configuration of the environment
436
443
  #
@@ -440,7 +447,7 @@ module Puppet::Environments
440
447
  #
441
448
  # @!macro loader_get_conf
442
449
  def get_conf(name)
443
- evict_if_expired(name)
450
+ clear_if_expired(name, @cache[name])
444
451
  @loader.get_conf(name)
445
452
  end
446
453
 
@@ -459,22 +466,7 @@ module Puppet::Environments
459
466
  when Float::INFINITY
460
467
  Entry.new(env) # Entry that never expires (avoids syscall to get time)
461
468
  else
462
- if Puppet[:environment_timeout_mode] == :from_last_used
463
- MRUEntry.new(env, ttl) # Entry that expires in ttl from when it was last touched
464
- else
465
- TTLEntry.new(env, ttl) # Entry that expires in ttl from when it was created
466
- end
467
- end
468
- end
469
-
470
- # Evicts the entry if it has expired
471
- # Also clears caches in Settings that may prevent the entry from being updated
472
- def evict_if_expired(name)
473
- if (result = @cache[name]) && (result.expired? || @cache_expiration_service.expired?(name.to_sym))
474
- Puppet.debug {"Evicting cache entry for environment '#{name}'"}
475
- @cache_expiration_service.evicted(name.to_sym)
476
- clear(name)
477
- Puppet.settings.clear_environment_settings(name)
469
+ MRUEntry.new(env, ttl) # Entry that expires in ttl from when it was last touched
478
470
  end
479
471
  end
480
472
 
@@ -489,59 +481,32 @@ module Puppet::Environments
489
481
  def touch
490
482
  end
491
483
 
492
- def expired?
484
+ def expired?(now)
493
485
  false
494
486
  end
495
487
 
496
488
  def label
497
489
  ""
498
490
  end
499
-
500
- def expires
501
- END_OF_TIME
502
- end
503
491
  end
504
492
 
505
493
  # Always evicting entry
506
494
  class NotCachedEntry < Entry
507
- def expired?
495
+ def expired?(now)
508
496
  true
509
497
  end
510
498
 
511
499
  def label
512
500
  "(ttl = 0 sec)"
513
501
  end
514
-
515
- def expires
516
- START_OF_TIME
517
- end
518
502
  end
519
503
 
520
- # Policy that expires in ttl_seconds from when it was created
521
- class TTLEntry < Entry
504
+ # Policy that expires if it hasn't been touched within ttl_seconds
505
+ class MRUEntry < Entry
522
506
  def initialize(value, ttl_seconds)
523
507
  super(value)
524
508
  @ttl = Time.now + ttl_seconds
525
509
  @ttl_seconds = ttl_seconds
526
- end
527
-
528
- def expired?
529
- Time.now > @ttl
530
- end
531
-
532
- def label
533
- "(ttl = #{@ttl_seconds} sec)"
534
- end
535
-
536
- def expires
537
- @ttl
538
- end
539
- end
540
-
541
- # Policy that expires if it hasn't been touched within ttl_seconds
542
- class MRUEntry < TTLEntry
543
- def initialize(value, ttl_seconds)
544
- super(value, ttl_seconds)
545
510
 
546
511
  touch
547
512
  end
@@ -550,8 +515,12 @@ module Puppet::Environments
550
515
  @ttl = Time.now + @ttl_seconds
551
516
  end
552
517
 
518
+ def expired?(now)
519
+ now > @ttl
520
+ end
521
+
553
522
  def label
554
- "(mru = #{@ttl_seconds} sec)"
523
+ "(ttl = #{@ttl_seconds} sec)"
555
524
  end
556
525
  end
557
526
  end
@@ -159,6 +159,16 @@ https://puppet.com/docs/puppet/latest/configuration.html#environment
159
159
  report_section_and_environment(options[:section], Puppet.settings[:environment])
160
160
  end
161
161
 
162
+ # only validate settings we recognize
163
+ setting = Puppet.settings.setting(name.to_sym)
164
+ if setting
165
+ # set the value, which will call `on_*_and_write` hooks, if any
166
+ Puppet.settings[setting.name] = value
167
+
168
+ # read the value to trigger interpolation and munge validation logic
169
+ Puppet.settings[setting.name]
170
+ end
171
+
162
172
  path = Puppet::FileSystem.pathname(Puppet.settings.which_configuration_file)
163
173
  Puppet::FileSystem.touch(path)
164
174
  Puppet::FileSystem.open(path, nil, 'r+:UTF-8') do |file|
@@ -440,7 +440,12 @@ Puppet::Face.define(:epp, '0.0.1') do
440
440
 
441
441
  def render_inline(epp_source, compiler, options)
442
442
  template_args = get_values(compiler, options)
443
- Puppet::Pops::Evaluator::EppEvaluator.inline_epp(compiler.topscope, epp_source, template_args)
443
+ result = Puppet::Pops::Evaluator::EppEvaluator.inline_epp(compiler.topscope, epp_source, template_args)
444
+ if result.instance_of?(Puppet::Pops::Types::PSensitiveType::Sensitive)
445
+ result.unwrap
446
+ else
447
+ result
448
+ end
444
449
  end
445
450
 
446
451
  def render_file(epp_template_name, compiler, options, show_filename, file_nbr)
@@ -457,7 +462,12 @@ Puppet::Face.define(:epp, '0.0.1') do
457
462
  if template_file.nil? && Puppet::FileSystem.exist?(epp_template_name)
458
463
  epp_template_name = File.expand_path(epp_template_name)
459
464
  end
460
- output << Puppet::Pops::Evaluator::EppEvaluator.epp(compiler.topscope, epp_template_name, compiler.environment, template_args)
465
+ result = Puppet::Pops::Evaluator::EppEvaluator.epp(compiler.topscope, epp_template_name, compiler.environment, template_args)
466
+ if result.instance_of?(Puppet::Pops::Types::PSensitiveType::Sensitive)
467
+ output << result.unwrap
468
+ else
469
+ output << result
470
+ end
461
471
  rescue Puppet::ParseError => detail
462
472
  Puppet.err("--- #{epp_template_name}") if show_filename
463
473
  raise detail
@@ -31,7 +31,6 @@ Puppet::Indirector::Face.define(:facts, '0.0.1') do
31
31
 
32
32
  $ puppet facts find
33
33
  EOT
34
- find.default = true
35
34
 
36
35
  deactivate_action(:destroy)
37
36
  deactivate_action(:search)
@@ -44,16 +43,12 @@ Puppet::Indirector::Face.define(:facts, '0.0.1') do
44
43
  EOT
45
44
  returns "Nothing."
46
45
  notes <<-'EOT'
47
- This action requires that the puppet master's `auth.conf` file
46
+ This action requires that the Puppet Server's `auth.conf` file
48
47
  allow `PUT` or `save` access to the `/puppet/v3/facts` API endpoint.
49
48
 
50
49
  For details on configuring Puppet Server's `auth.conf`, see:
51
50
 
52
51
  <https://puppet.com/docs/puppetserver/latest/config_file_auth.html>
53
-
54
- For legacy Rack-based Puppet Masters, see:
55
-
56
- <https://puppet.com/docs/puppet/latest/config_file_auth.html>
57
52
  EOT
58
53
  examples <<-'EOT'
59
54
  Upload facts:
@@ -87,4 +82,83 @@ Puppet::Indirector::Face.define(:facts, '0.0.1') do
87
82
  nil
88
83
  end
89
84
  end
85
+
86
+ action(:show) do
87
+ summary _("Retrieve current node's facts.")
88
+ arguments _("[<facts>]")
89
+ description <<-'EOT'
90
+ Reads facts from the local system using `facter` terminus.
91
+ A query can be provided to retrieve just a specific fact or a set of facts.
92
+ EOT
93
+ returns "The output of facter with added puppet specific facts."
94
+ notes <<-'EOT'
95
+
96
+ EOT
97
+ examples <<-'EOT'
98
+ retrieve facts:
99
+
100
+ $ puppet facts show os
101
+ EOT
102
+ default true
103
+
104
+ option("--config-file " + _("<path>")) do
105
+ default_to { nil }
106
+ summary _("The location of the config file for Facter.")
107
+ end
108
+
109
+ option("--custom-dir " + _("<path>")) do
110
+ default_to { nil }
111
+ summary _("The path to a directory that contains custom facts.")
112
+ end
113
+
114
+ option("--external-dir " + _("<path>")) do
115
+ default_to { nil }
116
+ summary _("The path to a directory that contains external facts.")
117
+ end
118
+
119
+ option("--no-block") do
120
+ summary _("Disable fact blocking mechanism.")
121
+ end
122
+
123
+ option("--no-cache") do
124
+ summary _("Disable fact caching mechanism.")
125
+ end
126
+
127
+ option("--show-legacy") do
128
+ summary _("Show legacy facts when querying all facts.")
129
+ end
130
+
131
+ option("--value-only") do
132
+ summary _("Show only the value when the action is called with a single query")
133
+ end
134
+
135
+ when_invoked do |*args|
136
+ options = args.pop
137
+
138
+ Puppet.settings.preferred_run_mode = :agent
139
+ Puppet::Node::Facts.indirection.terminus_class = :facter
140
+
141
+ if options[:value_only] && !args.count.eql?(1)
142
+ options[:value_only] = nil
143
+ Puppet.warning("Incorrect use of --value-only argument; it can only be used when querying for a single fact!")
144
+ end
145
+
146
+ options[:user_query] = args
147
+ options[:resolve_options] = true
148
+ result = Puppet::Node::Facts.indirection.find(Puppet.settings[:certname], options)
149
+
150
+ facts = result.values
151
+
152
+ if options[:value_only]
153
+ facts.values.first
154
+ else
155
+ facts
156
+ end
157
+ end
158
+
159
+ when_rendering :console do |result|
160
+ Puppet::Util::Json.dump(result, :pretty => true)
161
+ end
162
+ end
90
163
  end
164
+
@@ -222,7 +222,7 @@ Puppet::Face.define(:help, '0.0.1') do
222
222
  #private :horribly_extract_summary_from
223
223
 
224
224
  def exclude_from_docs?(appname)
225
- %w{face_base indirection_base cert key man report status}.include? appname
225
+ %w{face_base indirection_base report status}.include? appname
226
226
  end
227
227
  # This should absolutely be a private method, but for some reason it appears
228
228
  # that you can't use the 'private' keyword inside of a Face definition.
@@ -47,6 +47,14 @@ Puppet::Face.define(:node, '0.0.1') do
47
47
  end
48
48
 
49
49
  class LoggerIO
50
+ def debug(message)
51
+ Puppet.debug(message)
52
+ end
53
+
54
+ def warn(message)
55
+ Puppet.warning(message)
56
+ end
57
+
50
58
  def err(message)
51
59
  Puppet.err(message) unless message =~ /^\s*Error:\s*/
52
60
  end
@@ -41,14 +41,11 @@ Puppet::Face.define(:plugin, '0.0.1') do
41
41
  when_invoked do |options|
42
42
  remote_environment_for_plugins = Puppet::Node::Environment.remote(Puppet[:environment])
43
43
 
44
- pool = Puppet.runtime[:http].pool
45
- Puppet.override(:http_pool => pool) do
46
- begin
47
- handler = Puppet::Configurer::PluginHandler.new
48
- handler.download_plugins(remote_environment_for_plugins)
49
- ensure
50
- pool.close
51
- end
44
+ begin
45
+ handler = Puppet::Configurer::PluginHandler.new
46
+ handler.download_plugins(remote_environment_for_plugins)
47
+ ensure
48
+ Puppet.runtime[:http].close
52
49
  end
53
50
  end
54
51
 
@@ -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