puppet 6.19.0 → 7.3.0

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

Potentially problematic release.


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

Files changed (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 -170
  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
@@ -1,51 +0,0 @@
1
- require 'puppet/indirector/face'
2
-
3
- Puppet::Indirector::Face.define(:status, '0.0.1') do
4
- copyright "Puppet Inc.", 2011
5
- license _("Apache 2 license; see COPYING")
6
-
7
- summary _("View puppet server status.")
8
-
9
- deactivate_action(:destroy)
10
- deactivate_action(:save)
11
- deactivate_action(:search)
12
-
13
- find = get_action(:find)
14
- find.default = true
15
- find.summary _("Check status of puppet master server.")
16
- #TRANSLATORS the string 'Puppet::Status' is a Puppet language object and should not be translated
17
- find.returns _(<<-'EOT')
18
- A "true" response or a low-level connection error. When used from the Ruby
19
- API: returns a Puppet::Status object.
20
- EOT
21
- find.description <<-'EOT'
22
- Checks whether a Puppet server is properly receiving and processing
23
- HTTP requests. This action is only useful when used with '--terminus
24
- rest'; when invoked with the `local` terminus, `find` will always
25
- return true.
26
-
27
- Over REST, this action will query the configured puppet master by default.
28
- To query other servers, including puppet agent nodes started with the
29
- <--listen> option, you can set the global <--server> and <--serverport>
30
- options on the command line; note that agent nodes listen on port 8139.
31
- EOT
32
- find.short_description <<-EOT
33
- Checks whether a Puppet server is properly receiving and processing HTTP
34
- requests. This action is only useful when used with '--terminus rest',
35
- and will always return true when invoked locally.
36
- EOT
37
- find.notes <<-'EOT'
38
- This action requires that the server's `auth.conf` file allow find
39
- access to the `status` REST terminus. Puppet agent does not use this
40
- facility, and it is turned off by default. See
41
- <https://puppet.com/docs/puppet/latest/config_file_auth.html>
42
- for more details.
43
- EOT
44
- find.examples <<-'EOT'
45
- Check the status of the configured puppet master:
46
-
47
- $ puppet status find --terminus rest
48
- EOT
49
-
50
- deprecate
51
- end
@@ -1,9 +0,0 @@
1
- require 'puppet/indirector/ssl_file'
2
- require 'puppet/ssl/certificate'
3
-
4
- # @deprecated
5
- class Puppet::SSL::Certificate::File < Puppet::Indirector::SslFile
6
- desc "Manage SSL certificates on disk."
7
-
8
- store_in :certdir
9
- end
@@ -1,18 +0,0 @@
1
- require 'puppet/ssl/certificate'
2
- require 'puppet/indirector/rest'
3
-
4
- # @deprecated
5
- class Puppet::SSL::Certificate::Rest < Puppet::Indirector::REST
6
- desc "Find certificates over HTTP via REST."
7
-
8
- use_server_setting(:ca_server)
9
- use_port_setting(:ca_port)
10
- use_srv_service(:ca)
11
-
12
- def find(request)
13
- result = super
14
- return nil unless result
15
- result.name = request.key unless result.name == request.key
16
- result
17
- end
18
- end
@@ -1,9 +0,0 @@
1
- require 'puppet/indirector/ssl_file'
2
- require 'puppet/ssl/certificate_request'
3
-
4
- # @deprecated
5
- class Puppet::SSL::CertificateRequest::File < Puppet::Indirector::SslFile
6
- desc "Manage the collection of certificate requests on disk."
7
-
8
- store_in :requestdir
9
- end
@@ -1,7 +0,0 @@
1
- require 'puppet/ssl/certificate_request'
2
- require 'puppet/indirector/memory'
3
-
4
- # @deprecated
5
- class Puppet::SSL::CertificateRequest::Memory < Puppet::Indirector::Memory
6
- desc "Store certificate requests in memory. This is used for testing puppet."
7
- end
@@ -1,11 +0,0 @@
1
- require 'puppet/ssl/certificate_request'
2
- require 'puppet/indirector/rest'
3
-
4
- # @deprecated
5
- class Puppet::SSL::CertificateRequest::Rest < Puppet::Indirector::REST
6
- desc "Find and save certificate requests over HTTP via REST."
7
-
8
- use_server_setting(:ca_server)
9
- use_port_setting(:ca_port)
10
- use_srv_service(:ca)
11
- end
@@ -1,22 +0,0 @@
1
- require 'puppet/file_serving/metadata'
2
- require 'puppet/indirector/generic_http'
3
- require 'puppet/network/http'
4
-
5
- class Puppet::Indirector::FileContent::Http < Puppet::Indirector::GenericHttp
6
- desc "Retrieve file contents from a remote HTTP server."
7
-
8
- include Puppet::FileServing::TerminusHelper
9
- include Puppet::Network::HTTP::Compression.module
10
-
11
- @http_method = :get
12
-
13
- def initialize
14
- Puppet.deprecation_warning(_("Puppet::Indirector::FileContent::Http is deprecated. Use Puppet::HTTP::Client instead."))
15
- super
16
- end
17
-
18
- def find(request)
19
- response = super
20
- model.from_binary(uncompress_body(response))
21
- end
22
- end
@@ -1,46 +0,0 @@
1
- require 'puppet/indirector/ssl_file'
2
- require 'puppet/ssl/key'
3
-
4
- # @deprecated
5
- class Puppet::SSL::Key::File < Puppet::Indirector::SslFile
6
- desc "Manage SSL private and public keys on disk."
7
-
8
- store_in :privatekeydir
9
-
10
- def allow_remote_requests?
11
- false
12
- end
13
-
14
- # Where should we store the public key?
15
- def public_key_path(name)
16
- File.join(Puppet[:publickeydir], name.to_s + ".pem")
17
- end
18
-
19
- # Remove the public key, in addition to the private key
20
- def destroy(request)
21
- super
22
-
23
- key_path = Puppet::FileSystem.pathname(public_key_path(request.key))
24
- return unless Puppet::FileSystem.exist?(key_path)
25
-
26
- begin
27
- Puppet::FileSystem.unlink(key_path)
28
- rescue => detail
29
- raise Puppet::Error, _("Could not remove %{request} public key: %{detail}") % { request: request.key, detail: detail }, detail.backtrace
30
- end
31
- end
32
-
33
- # Save the public key, in addition to the private key.
34
- def save(request)
35
- super
36
-
37
- begin
38
- # RFC 1421 states PEM is 7-bit ASCII https://tools.ietf.org/html/rfc1421
39
- Puppet.settings.setting(:publickeydir).open_file(public_key_path(request.key), 'w:ASCII') do |f|
40
- f.print request.instance.content.public_key.to_pem
41
- end
42
- rescue => detail
43
- raise Puppet::Error, _("Could not write %{request}: %{detail}") % { request: request.key, detail: detail }, detail.backtrace
44
- end
45
- end
46
- end
@@ -1,7 +0,0 @@
1
- require 'puppet/ssl/key'
2
- require 'puppet/indirector/memory'
3
-
4
- # @deprecated
5
- class Puppet::SSL::Key::Memory < Puppet::Indirector::Memory
6
- desc "Store keys in memory. This is used for testing puppet."
7
- end
@@ -1,162 +0,0 @@
1
- require 'puppet/ssl'
2
-
3
- class Puppet::Indirector::SslFile < Puppet::Indirector::Terminus
4
- # Specify the directory in which multiple files are stored.
5
- def self.store_in(setting)
6
- @directory_setting = setting
7
- end
8
-
9
- # Specify a single file location for storing just one file.
10
- # This is used for things like the CRL.
11
- def self.store_at(setting)
12
- @file_setting = setting
13
- end
14
-
15
- class << self
16
- attr_reader :directory_setting, :file_setting
17
- end
18
-
19
- # The full path to where we should store our files.
20
- def self.collection_directory
21
- return nil unless directory_setting
22
- Puppet.settings[directory_setting]
23
- end
24
-
25
- # The full path to an individual file we would be managing.
26
- def self.file_location
27
- return nil unless file_setting
28
- Puppet.settings[file_setting]
29
- end
30
-
31
- def initialize
32
- Puppet.settings.use(:main, :ssl)
33
-
34
- (collection_directory || file_location) or raise Puppet::DevError, _("No file or directory setting provided; terminus %{class_name} cannot function") % { class_name: self.class.name }
35
- end
36
-
37
- def path(name)
38
- if name =~ Puppet::Indirector::BadNameRegexp then
39
- Puppet.crit(_("directory traversal detected in %{indirection}: %{name}") % { indirection: self.class, name: name.inspect })
40
- raise ArgumentError, _("invalid key")
41
- end
42
-
43
- if collection_directory
44
- File.join(collection_directory, name.to_s + ".pem")
45
- else
46
- file_location
47
- end
48
- end
49
-
50
- # Remove our file.
51
- def destroy(request)
52
- path = Puppet::FileSystem.pathname(path(request.key))
53
- return false unless Puppet::FileSystem.exist?(path)
54
-
55
- Puppet.notice _("Removing file %{model} %{request} at '%{path}'") % { model: model, request: request.key, path: path }
56
- begin
57
- Puppet::FileSystem.unlink(path)
58
- rescue => detail
59
- raise Puppet::Error, _("Could not remove %{request}: %{detail}") % { request: request.key, detail: detail }, detail.backtrace
60
- end
61
- end
62
-
63
- # Find the file on disk, returning an instance of the model.
64
- def find(request)
65
- filename = rename_files_with_uppercase(path(request.key))
66
-
67
- filename ? create_model(request.key, filename) : nil
68
- end
69
-
70
- # Save our file to disk.
71
- def save(request)
72
- path = path(request.key)
73
- dir = File.dirname(path)
74
-
75
- raise Puppet::Error.new(_("Cannot save %{request}; parent directory %{dir} does not exist") % { request: request.key, dir: dir }) unless FileTest.directory?(dir)
76
- raise Puppet::Error.new(_("Cannot save %{request}; parent directory %{dir} is not writable") % { request: request.key, dir: dir }) unless FileTest.writable?(dir)
77
-
78
- write(request.key, path) { |f| f.print request.instance.to_s }
79
- end
80
-
81
- # Search for more than one file. At this point, it just returns
82
- # an instance for every file in the directory.
83
- def search(request)
84
- dir = collection_directory
85
- Dir.entries(dir).
86
- select { |file| file =~ /\.pem$/ }.
87
- collect { |file| create_model(file.sub(/\.pem$/, ''), File.join(dir, file)) }.
88
- compact
89
- end
90
-
91
- private
92
-
93
- def create_model(name, path)
94
- result = model.new(name)
95
- # calls Puppet::SSL::Base#read for subclasses of Puppet::SSL::Base
96
- # with the exception of any overrides, like Puppet::SSL::Key
97
- result.read(path)
98
- result
99
- end
100
-
101
- # Demeterish pointers to class info.
102
- def collection_directory
103
- self.class.collection_directory
104
- end
105
-
106
- def file_location
107
- self.class.file_location
108
- end
109
-
110
- # A hack method to deal with files that exist with a different case.
111
- # Just renames it; doesn't read it in or anything.
112
- # LAK:NOTE This is a copy of the method in sslcertificates/support.rb,
113
- # which we'll be EOL'ing at some point. This method was added at 20080702
114
- # and should be removed at some point.
115
- def rename_files_with_uppercase(file)
116
- return file if Puppet::FileSystem.exist?(file)
117
-
118
- dir, short = File.split(file)
119
- return nil unless Puppet::FileSystem.exist?(dir)
120
-
121
- raise ArgumentError, _("Tried to fix SSL files to a file containing uppercase") unless short.downcase == short
122
- real_file = Dir.entries(dir).reject { |f| f =~ /^\./ }.find do |other|
123
- other.downcase == short
124
- end
125
-
126
- return nil unless real_file
127
-
128
- full_file = File.join(dir, real_file)
129
-
130
- Puppet.deprecation_warning _("Automatic downcasing and renaming of ssl files is deprecated; please request the file using its correct case: %{full_file}") % { full_file: full_file }
131
- File.rename(full_file, file)
132
-
133
- file
134
- end
135
-
136
- # Yield a filehandle set up appropriately, either with our settings doing
137
- # the work or opening a filehandle manually.
138
- def write(name, path)
139
- # All types serialized to disk contain only ASCII content:
140
- # * SSL::Key may be a .export(OpenSSL::Cipher::DES.new(:EDE3, :CBC), pass) or .to_pem
141
- # * All other classes are translated to strings by calling .to_pem
142
- if file_location
143
- Puppet.settings.setting(self.class.file_setting).open('w:ASCII') { |f| yield f }
144
- else
145
- setting = self.class.directory_setting
146
- if setting
147
- begin
148
- Puppet.settings.setting(setting).open_file(path, 'w:ASCII') { |f| yield f }
149
- rescue => detail
150
- raise Puppet::Error, _("Could not write %{path} to %{setting}: %{detail}") % { path: path, setting: setting, detail: detail }, detail.backtrace
151
- end
152
- else
153
- raise Puppet::DevError, _("You must provide a setting to determine where the files are stored")
154
- end
155
- end
156
- end
157
- end
158
-
159
- # LAK:NOTE This has to be at the end, because classes like SSL::Key use this
160
- # class, and this require statement loads those, which results in a load loop
161
- # and lots of failures.
162
- require 'puppet/ssl/host'
@@ -1,3 +0,0 @@
1
- # A stub class, so our constants work.
2
- class Puppet::Indirector::Status
3
- end
@@ -1,12 +0,0 @@
1
- require 'puppet/indirector/status'
2
-
3
- class Puppet::Indirector::Status::Local < Puppet::Indirector::Code
4
-
5
- desc "Get status locally. Only used internally."
6
-
7
- def find( *anything )
8
- status = model.new
9
- status.version= Puppet.version
10
- status
11
- end
12
- end
@@ -1,27 +0,0 @@
1
- require 'puppet/indirector/status'
2
- require 'puppet/indirector/rest'
3
-
4
- class Puppet::Indirector::Status::Rest < Puppet::Indirector::REST
5
-
6
- desc "Get puppet master's status via REST. Useful because it tests the health
7
- of both the web server and the indirector."
8
-
9
- def find(request)
10
- return super unless use_http_client?
11
-
12
- session = Puppet.lookup(:http_session)
13
- api = session.route_to(:puppet)
14
- _, status = api.get_status(request.key)
15
- status
16
- rescue Puppet::HTTP::ResponseError => e
17
- if e.response.code == 404
18
- return nil unless request.options[:fail_on_404]
19
-
20
- _, body = parse_response(e.response.nethttp)
21
- msg = _("Find %{uri} resulted in 404 with the message: %{body}") % { uri: elide(e.response.url.path, 100), body: body }
22
- raise Puppet::Error, msg
23
- else
24
- raise convert_to_http_error(e.response.nethttp)
25
- end
26
- end
27
- end
@@ -1,29 +0,0 @@
1
- module Puppet::ModuleTool
2
- module Applications
3
- class Searcher < Application
4
- include Puppet::Forge::Errors
5
-
6
- def initialize(term, forge, options = {})
7
- @term = term
8
- @forge = forge
9
- super(options)
10
- end
11
-
12
- def run
13
- results = {}
14
- begin
15
- Puppet.notice _("Searching %{host} ...") % { host: @forge.host }
16
- results[:answers] = @forge.search(@term)
17
- results[:result] = :success
18
- rescue ForgeError => e
19
- results[:result] = :failure
20
- results[:error] = {
21
- :oneline => e.message,
22
- :multiline => e.multiline,
23
- }
24
- end
25
- results
26
- end
27
- end
28
- end
29
- end
@@ -1,90 +0,0 @@
1
- require 'puppet/network/rights'
2
-
3
- module Puppet::Network
4
- class AuthConfigParser
5
-
6
- def self.new_from_file(file)
7
- self.new(Puppet::FileSystem.read(file, :encoding => 'utf-8'))
8
- end
9
-
10
- def initialize(string)
11
- @string = string
12
- end
13
-
14
- def parse
15
- Puppet::Network::AuthConfig.new(parse_rights)
16
- end
17
-
18
- def parse_rights
19
- rights = Puppet::Network::Rights.new
20
- right = nil
21
- count = 1
22
- @string.each_line { |line|
23
- case line.chomp
24
- when /^\s*#/, /^\s*$/
25
- # skip comments and blank lines
26
- when /^path\s+((?:~\s+)?[^ ]+)\s*$/ # "path /path" or "path ~ regex"
27
- name = $1.chomp
28
- right = rights.newright(name, count, @file)
29
- when /^\s*(allow(?:_ip)?|deny(?:_ip)?|method|environment|auth(?:enticated)?)\s+(.+?)(\s*#.*)?$/
30
- if right.nil?
31
- #TRANSLATORS "path" is a configuration file entry and should not be translated
32
- raise Puppet::ConfigurationError, _("Missing or invalid 'path' before right directive at %{error_location}") %
33
- { error_location: Puppet::Util::Errors.error_location(@file, count) }
34
- end
35
- parse_right_directive(right, $1, $2, count)
36
- else
37
- error_location_str = Puppet::Util::Errors.error_location(nil, count)
38
- raise Puppet::ConfigurationError, _("Invalid entry at %{error_location}: %{file_text}") %
39
- { error_location: error_location_str, file_text: line }
40
- end
41
- count += 1
42
- }
43
-
44
- # Verify each of the rights are valid.
45
- # We let the check raise an error, so that it can raise an error
46
- # pointing to the specific problem.
47
- rights.each { |name, r|
48
- r.valid?
49
- }
50
- rights
51
- end
52
-
53
- def parse_right_directive(right, var, value, count)
54
- value.strip!
55
- case var
56
- when "allow"
57
- modify_right(right, :allow, value, _("allowing %{value} access"), count)
58
- when "deny"
59
- modify_right(right, :deny, value, _("denying %{value} access"), count)
60
- when "allow_ip"
61
- modify_right(right, :allow_ip, value, _("allowing IP %{value} access"), count)
62
- when "deny_ip"
63
- modify_right(right, :deny_ip, value, _("denying IP %{value} access"), count)
64
- when "method"
65
- modify_right(right, :restrict_method, value, _("allowing 'method' %{value}"), count)
66
- when "environment"
67
- modify_right(right, :restrict_environment, value, _("adding environment %{value}"), count)
68
- when /auth(?:enticated)?/
69
- modify_right(right, :restrict_authenticated, value, _("adding authentication %{value}"), count)
70
- else
71
- error_location_str = Puppet::Util::Errors.error_location(nil, count)
72
- raise Puppet::ConfigurationError, _("Invalid argument '%{var}' at %{error_location}") %
73
- { var: var, error_location: error_location_str }
74
- end
75
- end
76
-
77
- def modify_right(right, method, value, msg, count)
78
- value.split(/\s*,\s*/).each do |val|
79
- begin
80
- val.strip!
81
- right.info msg % { value: val }
82
- right.send(method, val)
83
- rescue Puppet::AuthStoreError => detail
84
- error_location_str = Puppet::Util::Errors.error_location(@file, count)
85
- raise Puppet::ConfigurationError, "#{detail} #{error_location_str}", detail.backtrace
86
- end
87
- end
88
- end
89
- end
90
- end