puppet 6.17.0-x64-mingw32 → 7.1.0-x64-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 (622) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -16
  3. data/Gemfile +3 -4
  4. data/Gemfile.lock +32 -30
  5. data/README.md +2 -3
  6. data/Rakefile +4 -12
  7. data/conf/fileserver.conf +5 -10
  8. data/ext/build_defaults.yaml +1 -1
  9. data/ext/osx/file_mapping.yaml +0 -5
  10. data/ext/project_data.yaml +2 -14
  11. data/ext/redhat/puppet.spec.erb +0 -1
  12. data/ext/windows/service/daemon.rb +6 -5
  13. data/install.rb +21 -17
  14. data/lib/puppet.rb +11 -20
  15. data/lib/puppet/agent/locker.rb +0 -7
  16. data/lib/puppet/application.rb +172 -98
  17. data/lib/puppet/application/agent.rb +8 -3
  18. data/lib/puppet/application/apply.rb +18 -20
  19. data/lib/puppet/application/device.rb +100 -104
  20. data/lib/puppet/application/doc.rb +1 -1
  21. data/lib/puppet/application/filebucket.rb +15 -11
  22. data/lib/puppet/application/lookup.rb +16 -4
  23. data/lib/puppet/application/ssl.rb +1 -1
  24. data/lib/puppet/application_support.rb +7 -0
  25. data/lib/puppet/configurer.rb +46 -19
  26. data/lib/puppet/configurer/downloader.rb +31 -10
  27. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  28. data/lib/puppet/confine.rb +1 -1
  29. data/lib/puppet/confine/any.rb +1 -1
  30. data/lib/puppet/defaults.rb +116 -162
  31. data/lib/puppet/environments.rb +72 -62
  32. data/lib/puppet/face/catalog.rb +1 -1
  33. data/lib/puppet/face/config.rb +56 -16
  34. data/lib/puppet/face/epp.rb +12 -2
  35. data/lib/puppet/face/facts.rb +66 -6
  36. data/lib/puppet/face/help.rb +1 -1
  37. data/lib/puppet/face/node.rb +3 -3
  38. data/lib/puppet/face/node/clean.rb +10 -2
  39. data/lib/puppet/face/plugin.rb +5 -8
  40. data/lib/puppet/feature/base.rb +1 -1
  41. data/lib/puppet/ffi/posix.rb +10 -0
  42. data/lib/puppet/ffi/posix/constants.rb +14 -0
  43. data/lib/puppet/ffi/posix/functions.rb +24 -0
  44. data/lib/puppet/ffi/windows.rb +12 -0
  45. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  46. data/lib/puppet/ffi/windows/constants.rb +404 -0
  47. data/lib/puppet/ffi/windows/functions.rb +628 -0
  48. data/lib/puppet/ffi/windows/structs.rb +338 -0
  49. data/lib/puppet/file_bucket/dipper.rb +1 -1
  50. data/lib/puppet/file_serving/configuration.rb +0 -5
  51. data/lib/puppet/file_serving/configuration/parser.rb +3 -32
  52. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  53. data/lib/puppet/file_serving/mount.rb +1 -2
  54. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  55. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  56. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  57. data/lib/puppet/file_system/file_impl.rb +3 -3
  58. data/lib/puppet/forge/repository.rb +0 -1
  59. data/lib/puppet/functions/epp.rb +1 -0
  60. data/lib/puppet/functions/inline_epp.rb +1 -0
  61. data/lib/puppet/functions/lstrip.rb +4 -4
  62. data/lib/puppet/functions/new.rb +8 -3
  63. data/lib/puppet/functions/reverse_each.rb +1 -1
  64. data/lib/puppet/functions/rstrip.rb +4 -4
  65. data/lib/puppet/functions/step.rb +1 -1
  66. data/lib/puppet/functions/strip.rb +4 -4
  67. data/lib/puppet/generate/models/type/type.rb +4 -1
  68. data/lib/puppet/gettext/config.rb +5 -5
  69. data/lib/puppet/gettext/module_translations.rb +4 -4
  70. data/lib/puppet/http.rb +23 -13
  71. data/lib/puppet/http/client.rb +165 -115
  72. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  73. data/lib/puppet/http/errors.rb +16 -0
  74. data/lib/puppet/http/external_client.rb +5 -7
  75. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  76. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  77. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  78. data/lib/puppet/http/proxy.rb +137 -0
  79. data/lib/puppet/http/redirector.rb +4 -12
  80. data/lib/puppet/http/resolver.rb +10 -23
  81. data/lib/puppet/http/resolver/server_list.rb +23 -45
  82. data/lib/puppet/http/resolver/settings.rb +7 -10
  83. data/lib/puppet/http/resolver/srv.rb +11 -15
  84. data/lib/puppet/http/response.rb +36 -54
  85. data/lib/puppet/http/response_converter.rb +24 -0
  86. data/lib/puppet/http/response_net_http.rb +42 -0
  87. data/lib/puppet/http/retry_after_handler.rb +4 -13
  88. data/lib/puppet/http/service.rb +15 -27
  89. data/lib/puppet/http/service/ca.rb +11 -22
  90. data/lib/puppet/http/service/compiler.rb +23 -70
  91. data/lib/puppet/http/service/file_server.rb +19 -28
  92. data/lib/puppet/http/service/puppetserver.rb +53 -0
  93. data/lib/puppet/http/service/report.rb +8 -10
  94. data/lib/puppet/http/session.rb +16 -24
  95. data/lib/puppet/{network/http → http}/site.rb +1 -2
  96. data/lib/puppet/indirector/catalog/compiler.rb +1 -1
  97. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  98. data/lib/puppet/indirector/exec.rb +1 -1
  99. data/lib/puppet/indirector/fact_search.rb +60 -0
  100. data/lib/puppet/indirector/facts/facter.rb +27 -6
  101. data/lib/puppet/indirector/facts/json.rb +27 -0
  102. data/lib/puppet/indirector/facts/rest.rb +3 -22
  103. data/lib/puppet/indirector/facts/yaml.rb +4 -59
  104. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  105. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  106. data/lib/puppet/indirector/file_metadata/http.rb +1 -0
  107. data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
  108. data/lib/puppet/indirector/file_server.rb +1 -8
  109. data/lib/puppet/indirector/generic_http.rb +0 -11
  110. data/lib/puppet/indirector/hiera.rb +4 -0
  111. data/lib/puppet/indirector/indirection.rb +1 -1
  112. data/lib/puppet/indirector/json.rb +5 -1
  113. data/lib/puppet/indirector/msgpack.rb +1 -1
  114. data/lib/puppet/indirector/node/json.rb +8 -0
  115. data/lib/puppet/indirector/node/rest.rb +2 -4
  116. data/lib/puppet/indirector/report/json.rb +34 -0
  117. data/lib/puppet/indirector/report/processor.rb +2 -2
  118. data/lib/puppet/indirector/report/rest.rb +3 -8
  119. data/lib/puppet/indirector/request.rb +1 -102
  120. data/lib/puppet/indirector/rest.rb +12 -263
  121. data/lib/puppet/indirector/yaml.rb +1 -1
  122. data/lib/puppet/module.rb +1 -2
  123. data/lib/puppet/module_tool/applications.rb +0 -1
  124. data/lib/puppet/network/authconfig.rb +2 -96
  125. data/lib/puppet/network/authorization.rb +13 -35
  126. data/lib/puppet/network/format_support.rb +2 -2
  127. data/lib/puppet/network/formats.rb +2 -1
  128. data/lib/puppet/network/http.rb +3 -3
  129. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  130. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  131. data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
  132. data/lib/puppet/network/http/connection.rb +247 -316
  133. data/lib/puppet/network/http/handler.rb +0 -1
  134. data/lib/puppet/network/http/route.rb +2 -2
  135. data/lib/puppet/network/http_pool.rb +16 -34
  136. data/lib/puppet/node.rb +1 -30
  137. data/lib/puppet/node/environment.rb +12 -5
  138. data/lib/puppet/node/facts.rb +17 -0
  139. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  140. data/lib/puppet/pal/pal_impl.rb +93 -14
  141. data/lib/puppet/parameter.rb +1 -1
  142. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  143. data/lib/puppet/parser/compiler.rb +0 -198
  144. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  145. data/lib/puppet/parser/functions.rb +21 -17
  146. data/lib/puppet/parser/functions/create_resources.rb +11 -7
  147. data/lib/puppet/parser/resource.rb +0 -69
  148. data/lib/puppet/parser/templatewrapper.rb +1 -1
  149. data/lib/puppet/parser/type_loader.rb +2 -2
  150. data/lib/puppet/pops/adaptable.rb +7 -13
  151. data/lib/puppet/pops/adapters.rb +8 -4
  152. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
  153. data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -8
  154. data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
  155. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  156. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  157. data/lib/puppet/pops/issues.rb +0 -5
  158. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  159. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
  160. data/lib/puppet/pops/loaders.rb +18 -11
  161. data/lib/puppet/pops/lookup/context.rb +1 -1
  162. data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
  163. data/lib/puppet/pops/model/ast.pp +0 -42
  164. data/lib/puppet/pops/model/ast.rb +0 -290
  165. data/lib/puppet/pops/model/factory.rb +0 -45
  166. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  167. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  168. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  169. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  170. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  171. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  172. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  173. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  174. data/lib/puppet/pops/types/iterable.rb +34 -8
  175. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  176. data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
  177. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  178. data/lib/puppet/pops/types/type_parser.rb +0 -4
  179. data/lib/puppet/pops/types/types.rb +0 -1
  180. data/lib/puppet/pops/validation/checker4_0.rb +28 -52
  181. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  182. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  183. data/lib/puppet/provider.rb +0 -13
  184. data/lib/puppet/provider/file/windows.rb +1 -1
  185. data/lib/puppet/provider/nameservice.rb +0 -18
  186. data/lib/puppet/provider/package/apt.rb +34 -0
  187. data/lib/puppet/provider/package/dpkg.rb +1 -11
  188. data/lib/puppet/provider/package/gem.rb +27 -5
  189. data/lib/puppet/provider/package/pip.rb +0 -1
  190. data/lib/puppet/provider/package/pip2.rb +17 -0
  191. data/lib/puppet/provider/package/pkg.rb +0 -4
  192. data/lib/puppet/provider/package/portage.rb +1 -1
  193. data/lib/puppet/provider/package/puppet_gem.rb +6 -4
  194. data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
  195. data/lib/puppet/provider/package/yum.rb +1 -0
  196. data/lib/puppet/provider/package/zypper.rb +3 -0
  197. data/lib/puppet/provider/service/smf.rb +191 -73
  198. data/lib/puppet/provider/user/aix.rb +3 -3
  199. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  200. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  201. data/lib/puppet/provider/user/windows_adsi.rb +18 -1
  202. data/lib/puppet/reference/configuration.rb +2 -0
  203. data/lib/puppet/reference/indirection.rb +1 -1
  204. data/lib/puppet/resource.rb +1 -89
  205. data/lib/puppet/resource/catalog.rb +1 -14
  206. data/lib/puppet/resource/type.rb +5 -120
  207. data/lib/puppet/resource/type_collection.rb +3 -48
  208. data/lib/puppet/runtime.rb +1 -2
  209. data/lib/puppet/settings.rb +84 -35
  210. data/lib/puppet/settings/base_setting.rb +26 -2
  211. data/lib/puppet/settings/integer_setting.rb +17 -0
  212. data/lib/puppet/settings/port_setting.rb +15 -0
  213. data/lib/puppet/settings/priority_setting.rb +5 -4
  214. data/lib/puppet/ssl.rb +10 -6
  215. data/lib/puppet/ssl/base.rb +3 -5
  216. data/lib/puppet/ssl/certificate.rb +0 -6
  217. data/lib/puppet/ssl/certificate_request.rb +1 -12
  218. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  219. data/lib/puppet/ssl/oids.rb +3 -1
  220. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  221. data/lib/puppet/ssl/state_machine.rb +3 -1
  222. data/lib/puppet/ssl/verifier.rb +2 -0
  223. data/lib/puppet/test/test_helper.rb +11 -6
  224. data/lib/puppet/transaction.rb +3 -9
  225. data/lib/puppet/transaction/persistence.rb +1 -1
  226. data/lib/puppet/transaction/report.rb +10 -8
  227. data/lib/puppet/trusted_external.rb +2 -2
  228. data/lib/puppet/type.rb +4 -79
  229. data/lib/puppet/type/file.rb +7 -9
  230. data/lib/puppet/type/file/checksum.rb +1 -1
  231. data/lib/puppet/type/file/source.rb +29 -9
  232. data/lib/puppet/type/filebucket.rb +4 -4
  233. data/lib/puppet/type/notify.rb +2 -2
  234. data/lib/puppet/type/package.rb +5 -13
  235. data/lib/puppet/type/service.rb +4 -0
  236. data/lib/puppet/type/user.rb +19 -4
  237. data/lib/puppet/util.rb +26 -12
  238. data/lib/puppet/util/autoload.rb +9 -7
  239. data/lib/puppet/util/character_encoding.rb +9 -5
  240. data/lib/puppet/util/execution.rb +2 -13
  241. data/lib/puppet/util/http_proxy.rb +2 -215
  242. data/lib/puppet/util/monkey_patches.rb +0 -46
  243. data/lib/puppet/util/posix.rb +53 -4
  244. data/lib/puppet/util/rdoc.rb +0 -7
  245. data/lib/puppet/util/retry_action.rb +1 -1
  246. data/lib/puppet/util/rubygems.rb +5 -1
  247. data/lib/puppet/util/run_mode.rb +14 -2
  248. data/lib/puppet/util/windows.rb +3 -7
  249. data/lib/puppet/util/windows/daemon.rb +360 -0
  250. data/lib/puppet/util/windows/error.rb +1 -0
  251. data/lib/puppet/util/windows/eventlog.rb +4 -9
  252. data/lib/puppet/util/windows/file.rb +8 -242
  253. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  254. data/lib/puppet/util/windows/process.rb +4 -226
  255. data/lib/puppet/util/windows/security.rb +4 -4
  256. data/lib/puppet/util/windows/service.rb +9 -460
  257. data/lib/puppet/util/windows/string.rb +12 -13
  258. data/lib/puppet/util/windows/user.rb +219 -0
  259. data/lib/puppet/util/yaml.rb +0 -22
  260. data/lib/puppet/vendor/require_vendored.rb +0 -1
  261. data/lib/puppet/version.rb +1 -1
  262. data/lib/puppet/x509.rb +5 -1
  263. data/lib/puppet/x509/cert_provider.rb +29 -1
  264. data/locales/puppet.pot +656 -1351
  265. data/man/man5/puppet.conf.5 +72 -97
  266. data/man/man8/puppet-agent.8 +6 -3
  267. data/man/man8/puppet-apply.8 +1 -1
  268. data/man/man8/puppet-catalog.8 +1 -1
  269. data/man/man8/puppet-config.8 +6 -6
  270. data/man/man8/puppet-describe.8 +1 -1
  271. data/man/man8/puppet-device.8 +1 -1
  272. data/man/man8/puppet-doc.8 +1 -1
  273. data/man/man8/puppet-epp.8 +1 -1
  274. data/man/man8/puppet-facts.8 +55 -9
  275. data/man/man8/puppet-filebucket.8 +6 -6
  276. data/man/man8/puppet-generate.8 +1 -1
  277. data/man/man8/puppet-help.8 +1 -1
  278. data/man/man8/puppet-lookup.8 +2 -2
  279. data/man/man8/puppet-module.8 +1 -58
  280. data/man/man8/puppet-node.8 +7 -4
  281. data/man/man8/puppet-parser.8 +1 -1
  282. data/man/man8/puppet-plugin.8 +1 -1
  283. data/man/man8/puppet-report.8 +4 -1
  284. data/man/man8/puppet-resource.8 +1 -1
  285. data/man/man8/puppet-script.8 +1 -1
  286. data/man/man8/puppet-ssl.8 +1 -1
  287. data/man/man8/puppet.8 +2 -2
  288. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  289. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  290. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  291. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  292. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
  293. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  294. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
  295. data/spec/integration/application/agent_spec.rb +70 -61
  296. data/spec/integration/application/apply_spec.rb +150 -150
  297. data/spec/integration/application/doc_spec.rb +16 -6
  298. data/spec/integration/application/filebucket_spec.rb +78 -29
  299. data/spec/integration/application/help_spec.rb +44 -0
  300. data/spec/integration/application/lookup_spec.rb +13 -0
  301. data/spec/integration/application/module_spec.rb +68 -0
  302. data/spec/integration/application/plugin_spec.rb +76 -4
  303. data/spec/integration/configurer_spec.rb +14 -0
  304. data/spec/integration/data_binding_spec.rb +82 -0
  305. data/spec/integration/defaults_spec.rb +32 -3
  306. data/spec/integration/directory_environments_spec.rb +17 -17
  307. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  308. data/spec/integration/indirector/facts/facter_spec.rb +8 -6
  309. data/spec/integration/network/http_pool_spec.rb +3 -21
  310. data/spec/integration/node/environment_spec.rb +1 -1
  311. data/spec/integration/parser/catalog_spec.rb +0 -38
  312. data/spec/integration/parser/node_spec.rb +0 -9
  313. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  314. data/spec/integration/type/file_spec.rb +5 -4
  315. data/spec/integration/util/execution_spec.rb +22 -0
  316. data/spec/integration/util/windows/adsi_spec.rb +2 -2
  317. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  318. data/spec/integration/util/windows/process_spec.rb +26 -32
  319. data/spec/integration/util/windows/security_spec.rb +1 -1
  320. data/spec/integration/util/windows/user_spec.rb +7 -0
  321. data/spec/integration/util_spec.rb +7 -33
  322. data/spec/lib/puppet_spec/matchers.rb +0 -80
  323. data/spec/lib/puppet_spec/puppetserver.rb +9 -1
  324. data/spec/lib/puppet_spec/settings.rb +7 -1
  325. data/spec/shared_contexts/types_setup.rb +2 -0
  326. data/spec/spec_helper.rb +2 -0
  327. data/spec/unit/agent_spec.rb +0 -2
  328. data/spec/unit/application/agent_spec.rb +3 -4
  329. data/spec/unit/application/config_spec.rb +224 -4
  330. data/spec/unit/application/doc_spec.rb +2 -2
  331. data/spec/unit/application/face_base_spec.rb +6 -4
  332. data/spec/unit/application/facts_spec.rb +74 -8
  333. data/spec/unit/application/filebucket_spec.rb +41 -39
  334. data/spec/unit/application/resource_spec.rb +3 -1
  335. data/spec/unit/application/ssl_spec.rb +17 -4
  336. data/spec/unit/application_spec.rb +43 -4
  337. data/spec/unit/certificate_factory_spec.rb +1 -1
  338. data/spec/unit/configurer/downloader_spec.rb +14 -0
  339. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  340. data/spec/unit/configurer_spec.rb +96 -44
  341. data/spec/unit/confine_spec.rb +2 -1
  342. data/spec/unit/context/trusted_information_spec.rb +2 -6
  343. data/spec/unit/defaults_spec.rb +26 -32
  344. data/spec/unit/environments_spec.rb +173 -32
  345. data/spec/unit/face/config_spec.rb +65 -12
  346. data/spec/unit/face/facts_spec.rb +4 -0
  347. data/spec/unit/face/node_spec.rb +16 -4
  348. data/spec/unit/face/plugin_spec.rb +73 -33
  349. data/spec/unit/file_bucket/file_spec.rb +1 -1
  350. data/spec/unit/file_serving/configuration/parser_spec.rb +14 -18
  351. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  352. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  353. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  354. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  355. data/spec/unit/file_system/uniquefile_spec.rb +18 -0
  356. data/spec/unit/file_system_spec.rb +1 -2
  357. data/spec/unit/functions/camelcase_spec.rb +1 -1
  358. data/spec/unit/functions/capitalize_spec.rb +1 -1
  359. data/spec/unit/functions/downcase_spec.rb +1 -1
  360. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  361. data/spec/unit/functions/upcase_spec.rb +1 -1
  362. data/spec/unit/http/client_spec.rb +7 -9
  363. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  364. data/spec/unit/http/external_client_spec.rb +4 -4
  365. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  366. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  367. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  368. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  369. data/spec/unit/http/resolver_spec.rb +34 -15
  370. data/spec/unit/http/service/ca_spec.rb +2 -3
  371. data/spec/unit/http/service/compiler_spec.rb +51 -65
  372. data/spec/unit/http/service/file_server_spec.rb +5 -6
  373. data/spec/unit/http/service/puppetserver_spec.rb +112 -0
  374. data/spec/unit/http/service/report_spec.rb +2 -3
  375. data/spec/unit/http/service_spec.rb +1 -3
  376. data/spec/unit/http/session_spec.rb +24 -35
  377. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  378. data/spec/unit/indirector/catalog/json_spec.rb +1 -1
  379. data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
  380. data/spec/unit/indirector/facts/facter_spec.rb +97 -0
  381. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  382. data/spec/unit/indirector/facts/rest_spec.rb +1 -1
  383. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  384. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  385. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  386. data/spec/unit/indirector/file_server_spec.rb +1 -15
  387. data/spec/unit/indirector/json_spec.rb +8 -8
  388. data/spec/unit/indirector/msgpack_spec.rb +8 -8
  389. data/spec/unit/indirector/node/json_spec.rb +33 -0
  390. data/spec/unit/indirector/node/rest_spec.rb +1 -1
  391. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  392. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  393. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  394. data/spec/unit/indirector/request_spec.rb +2 -266
  395. data/spec/unit/indirector/rest_spec.rb +98 -752
  396. data/spec/unit/indirector/yaml_spec.rb +7 -7
  397. data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
  398. data/spec/unit/network/authconfig_spec.rb +2 -132
  399. data/spec/unit/network/authorization_spec.rb +2 -55
  400. data/spec/unit/network/format_support_spec.rb +3 -2
  401. data/spec/unit/network/formats_spec.rb +4 -4
  402. data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -97
  403. data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
  404. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  405. data/spec/unit/network/http/api_spec.rb +10 -0
  406. data/spec/unit/network/http/connection_spec.rb +19 -41
  407. data/spec/unit/network/http/handler_spec.rb +0 -6
  408. data/spec/unit/network/http_pool_spec.rb +0 -4
  409. data/spec/unit/node/environment_spec.rb +51 -22
  410. data/spec/unit/node_spec.rb +2 -54
  411. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  412. data/spec/unit/parser/templatewrapper_spec.rb +4 -3
  413. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  414. data/spec/unit/pops/loaders/loaders_spec.rb +76 -21
  415. data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
  416. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  417. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  418. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  419. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  420. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  421. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  422. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  423. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  424. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  425. data/spec/unit/pops/visitor_spec.rb +1 -1
  426. data/spec/unit/provider/exec_spec.rb +4 -3
  427. data/spec/unit/provider/nameservice_spec.rb +0 -57
  428. data/spec/unit/provider/package/apt_spec.rb +77 -0
  429. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  430. data/spec/unit/provider/package/dpkg_spec.rb +22 -55
  431. data/spec/unit/provider/package/gem_spec.rb +32 -0
  432. data/spec/unit/provider/package/openbsd_spec.rb +2 -0
  433. data/spec/unit/provider/package/pip2_spec.rb +36 -0
  434. data/spec/unit/provider/package/puppet_gem_spec.rb +6 -2
  435. data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
  436. data/spec/unit/provider/package/yum_spec.rb +31 -0
  437. data/spec/unit/provider/package/zypper_spec.rb +14 -0
  438. data/spec/unit/provider/service/base_spec.rb +2 -4
  439. data/spec/unit/provider/service/bsd_spec.rb +5 -1
  440. data/spec/unit/provider/service/daemontools_spec.rb +1 -1
  441. data/spec/unit/provider/service/debian_spec.rb +3 -5
  442. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  443. data/spec/unit/provider/service/gentoo_spec.rb +4 -5
  444. data/spec/unit/provider/service/init_spec.rb +45 -5
  445. data/spec/unit/provider/service/launchd_spec.rb +5 -6
  446. data/spec/unit/provider/service/openrc_spec.rb +4 -5
  447. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  448. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  449. data/spec/unit/provider/service/runit_spec.rb +2 -1
  450. data/spec/unit/provider/service/smf_spec.rb +402 -166
  451. data/spec/unit/provider/service/src_spec.rb +3 -5
  452. data/spec/unit/provider/service/systemd_spec.rb +3 -6
  453. data/spec/unit/provider/service/upstart_spec.rb +4 -5
  454. data/spec/unit/provider/service/windows_spec.rb +28 -1
  455. data/spec/unit/provider/user/aix_spec.rb +5 -0
  456. data/spec/unit/provider/user/pw_spec.rb +2 -0
  457. data/spec/unit/provider/user/useradd_spec.rb +1 -0
  458. data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
  459. data/spec/unit/provider_spec.rb +0 -12
  460. data/spec/unit/puppet_pal_2pec.rb +40 -0
  461. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  462. data/spec/unit/reports/store_spec.rb +17 -13
  463. data/spec/unit/resource/type_collection_spec.rb +2 -22
  464. data/spec/unit/resource_spec.rb +0 -56
  465. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  466. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  467. data/spec/unit/settings/port_setting_spec.rb +31 -0
  468. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  469. data/spec/unit/settings_spec.rb +586 -239
  470. data/spec/unit/ssl/base_spec.rb +36 -3
  471. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  472. data/spec/unit/ssl/certificate_spec.rb +2 -11
  473. data/spec/unit/ssl/ssl_provider_spec.rb +11 -8
  474. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  475. data/spec/unit/ssl/verifier_spec.rb +0 -21
  476. data/spec/unit/transaction/persistence_spec.rb +15 -0
  477. data/spec/unit/transaction/report_spec.rb +2 -2
  478. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  479. data/spec/unit/transaction_spec.rb +45 -79
  480. data/spec/unit/type/file/checksum_spec.rb +6 -6
  481. data/spec/unit/type/file/content_spec.rb +1 -1
  482. data/spec/unit/type/file/ensure_spec.rb +1 -1
  483. data/spec/unit/type/file/mode_spec.rb +1 -1
  484. data/spec/unit/type/file/source_spec.rb +1 -2
  485. data/spec/unit/type/file_spec.rb +12 -6
  486. data/spec/unit/type/filebucket_spec.rb +1 -1
  487. data/spec/unit/type/package_spec.rb +1 -1
  488. data/spec/unit/type/service_spec.rb +35 -2
  489. data/spec/unit/type/user_spec.rb +31 -2
  490. data/spec/unit/type_spec.rb +20 -0
  491. data/spec/unit/util/backups_spec.rb +0 -2
  492. data/spec/unit/util/character_encoding_spec.rb +4 -4
  493. data/spec/unit/util/command_line_spec.rb +11 -6
  494. data/spec/unit/util/execution_spec.rb +0 -29
  495. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  496. data/spec/unit/util/posix_spec.rb +357 -15
  497. data/spec/unit/util/rubygems_spec.rb +2 -2
  498. data/spec/unit/util/run_mode_spec.rb +27 -127
  499. data/spec/unit/util/storage_spec.rb +3 -1
  500. data/spec/unit/util/windows/string_spec.rb +1 -3
  501. data/spec/unit/util/yaml_spec.rb +0 -54
  502. data/spec/unit/util_spec.rb +0 -18
  503. metadata +84 -261
  504. data/conf/auth.conf +0 -150
  505. data/lib/puppet/application/cert.rb +0 -76
  506. data/lib/puppet/application/key.rb +0 -4
  507. data/lib/puppet/application/man.rb +0 -4
  508. data/lib/puppet/application/status.rb +0 -4
  509. data/lib/puppet/face/key.rb +0 -16
  510. data/lib/puppet/face/man.rb +0 -145
  511. data/lib/puppet/face/module/build.rb +0 -14
  512. data/lib/puppet/face/module/generate.rb +0 -14
  513. data/lib/puppet/face/module/search.rb +0 -103
  514. data/lib/puppet/face/status.rb +0 -51
  515. data/lib/puppet/indirector/certificate/file.rb +0 -9
  516. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  517. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  518. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  519. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  520. data/lib/puppet/indirector/file_content/http.rb +0 -22
  521. data/lib/puppet/indirector/key/file.rb +0 -46
  522. data/lib/puppet/indirector/key/memory.rb +0 -7
  523. data/lib/puppet/indirector/ssl_file.rb +0 -162
  524. data/lib/puppet/indirector/status.rb +0 -3
  525. data/lib/puppet/indirector/status/local.rb +0 -12
  526. data/lib/puppet/indirector/status/rest.rb +0 -27
  527. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  528. data/lib/puppet/network/auth_config_parser.rb +0 -90
  529. data/lib/puppet/network/authstore.rb +0 -283
  530. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  531. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  532. data/lib/puppet/network/http/base_pool.rb +0 -36
  533. data/lib/puppet/network/http/compression.rb +0 -127
  534. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  535. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  536. data/lib/puppet/network/rest_controller.rb +0 -2
  537. data/lib/puppet/network/rights.rb +0 -210
  538. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  539. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  540. data/lib/puppet/parser/environment_compiler.rb +0 -202
  541. data/lib/puppet/pops/types/enumeration.rb +0 -16
  542. data/lib/puppet/resource/capability_finder.rb +0 -154
  543. data/lib/puppet/rest/errors.rb +0 -15
  544. data/lib/puppet/rest/response.rb +0 -35
  545. data/lib/puppet/rest/route.rb +0 -85
  546. data/lib/puppet/rest/routes.rb +0 -135
  547. data/lib/puppet/ssl/host.rb +0 -505
  548. data/lib/puppet/ssl/key.rb +0 -61
  549. data/lib/puppet/ssl/validator.rb +0 -61
  550. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  551. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  552. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  553. data/lib/puppet/status.rb +0 -40
  554. data/lib/puppet/util/connection.rb +0 -88
  555. data/lib/puppet/util/ssl.rb +0 -83
  556. data/lib/puppet/util/windows/api_types.rb +0 -295
  557. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  558. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  559. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  560. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  561. data/lib/puppet/vendor/pathspec/README.md +0 -53
  562. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  563. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  564. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  565. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  566. data/man/man8/puppet-key.8 +0 -126
  567. data/man/man8/puppet-man.8 +0 -76
  568. data/man/man8/puppet-status.8 +0 -108
  569. data/spec/integration/faces/config_spec.rb +0 -91
  570. data/spec/integration/faces/documentation_spec.rb +0 -57
  571. data/spec/integration/file_bucket/file_spec.rb +0 -50
  572. data/spec/integration/file_serving/content_spec.rb +0 -7
  573. data/spec/integration/file_serving/fileset_spec.rb +0 -12
  574. data/spec/integration/file_serving/metadata_spec.rb +0 -8
  575. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
  576. data/spec/integration/file_system/uniquefile_spec.rb +0 -26
  577. data/spec/integration/module_tool/forge_spec.rb +0 -51
  578. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  579. data/spec/integration/network/authconfig_spec.rb +0 -256
  580. data/spec/integration/provider/service/init_spec.rb +0 -48
  581. data/spec/integration/provider/service/systemd_spec.rb +0 -25
  582. data/spec/integration/provider/service/windows_spec.rb +0 -50
  583. data/spec/integration/reference/providers_spec.rb +0 -21
  584. data/spec/integration/reports_spec.rb +0 -13
  585. data/spec/integration/ssl/certificate_request_spec.rb +0 -44
  586. data/spec/integration/ssl/host_spec.rb +0 -72
  587. data/spec/integration/ssl/key_spec.rb +0 -99
  588. data/spec/shared_behaviours/file_serving_model.rb +0 -51
  589. data/spec/unit/capability_spec.rb +0 -414
  590. data/spec/unit/face/catalog_spec.rb +0 -6
  591. data/spec/unit/face/key_spec.rb +0 -9
  592. data/spec/unit/face/man_spec.rb +0 -25
  593. data/spec/unit/face/module/search_spec.rb +0 -231
  594. data/spec/unit/face/module_spec.rb +0 -3
  595. data/spec/unit/face/status_spec.rb +0 -9
  596. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  597. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  598. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  599. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  600. data/spec/unit/indirector/key/file_spec.rb +0 -79
  601. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  602. data/spec/unit/indirector/status/local_spec.rb +0 -10
  603. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  604. data/spec/unit/man_spec.rb +0 -31
  605. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  606. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  607. data/spec/unit/network/authstore_spec.rb +0 -422
  608. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  609. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  610. data/spec/unit/network/http/compression_spec.rb +0 -240
  611. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  612. data/spec/unit/network/http_spec.rb +0 -9
  613. data/spec/unit/network/rights_spec.rb +0 -439
  614. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  615. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  616. data/spec/unit/resource/capability_finder_spec.rb +0 -143
  617. data/spec/unit/rest/route_spec.rb +0 -132
  618. data/spec/unit/ssl/host_spec.rb +0 -650
  619. data/spec/unit/ssl/key_spec.rb +0 -173
  620. data/spec/unit/ssl/validator_spec.rb +0 -278
  621. data/spec/unit/status_spec.rb +0 -45
  622. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -1,49 +1,40 @@
1
1
  require 'puppet/file_serving/metadata'
2
2
 
3
+ # The FileServer service is used to retrieve file metadata and content.
3
4
  #
4
- # @api private
5
- #
6
- # The FileServer service is used to retrieve file metadata and content
5
+ # @api public
7
6
  #
8
7
  class Puppet::HTTP::Service::FileServer < Puppet::HTTP::Service
9
- # @api private
10
8
  # @return [String] Default API for the FileServer service
11
9
  API = '/puppet/v3'.freeze
12
10
 
13
- # @api private
14
11
  # @return [RegEx] RegEx used to determine if a path contains a leading slash
15
12
  PATH_REGEX = /^\//
16
13
 
17
- #
18
- # @api private
14
+ # Use `Puppet::HTTP::Session.route_to(:fileserver)` to create or get an instance of this class.
19
15
  #
20
16
  # @param [Puppet::HTTP::Client] client
21
17
  # @param [Puppet::HTTP::Session] session
22
- # @param [String] server (Puppet[:ca_server]) If an explicit server is given,
18
+ # @param [String] server (`Puppet[:server]`) If an explicit server is given,
23
19
  # create a service using that server. If server is nil, the default value
24
20
  # is used to create the service.
25
- # @param [Integer] port (Puppet[:ca_port]) If an explicit port is given, create
21
+ # @param [Integer] port (`Puppet[:masterport]`) If an explicit port is given, create
26
22
  # a service using that port. If port is nil, the default value is used to
27
23
  # create the service.
28
24
  #
29
25
  def initialize(client, session, server, port)
30
- url = build_url(API, server || Puppet[:server], port || Puppet[:masterport])
26
+ url = build_url(API, server || Puppet[:server], port || Puppet[:serverport])
31
27
  super(client, session, url)
32
28
  end
33
29
 
34
- #
35
- # @api private
36
- #
37
- # Submit a GET request to the server to retrieve the metadata for a specified
38
- # file
30
+ # Submit a GET request to the server to retrieve the metadata for a specified file.
39
31
  #
40
32
  # @param [String] path path to the file to retrieve data from
41
33
  # @param [String] environment the name of the environment we are operating in
42
34
  # @param [Symbol] links Can be one of either `:follow` or `:manage`, defines
43
35
  # how links are handled.
44
36
  # @param [String] checksum_type The digest algorithm used to verify the file.
45
- # Currently if fips is enabled, this defaults to `sha256`. Otherwise, it
46
- # defaults to `md5`.
37
+ # Defaults to `sha256`.
47
38
  # @param [Symbol] source_permissions Can be one of `:use`, `:use_when_creating`,
48
39
  # or `:ignore`. This parameter tells the server if it should include the
49
40
  # file permissions in the response. If set to `:ignore`, the server will
@@ -53,6 +44,8 @@ class Puppet::HTTP::Service::FileServer < Puppet::HTTP::Service
53
44
  # array with the request response and the deserialized metadata for the
54
45
  # file returned from the server
55
46
  #
47
+ # @api public
48
+ #
56
49
  def get_file_metadata(path:, environment:, links: :manage, checksum_type: Puppet[:digest_algorithm], source_permissions: :ignore)
57
50
  validate_path(path)
58
51
 
@@ -74,9 +67,6 @@ class Puppet::HTTP::Service::FileServer < Puppet::HTTP::Service
74
67
  [response, deserialize(response, Puppet::FileServing::Metadata)]
75
68
  end
76
69
 
77
- #
78
- # @api private
79
- #
80
70
  # Submit a GET request to the server to retrieve the metadata for multiple files
81
71
  #
82
72
  # @param [String] path path to the file(s) to retrieve data from
@@ -106,6 +96,8 @@ class Puppet::HTTP::Service::FileServer < Puppet::HTTP::Service
106
96
  # An array with the request response and an array of the deserialized
107
97
  # metadata for each file returned from the server
108
98
  #
99
+ # @api public
100
+ #
109
101
  def get_file_metadatas(path: nil, environment:, recurse: :false, recurselimit: nil, ignore: nil, links: :manage, checksum_type: Puppet[:digest_algorithm], source_permissions: :ignore)
110
102
  validate_path(path)
111
103
 
@@ -130,10 +122,7 @@ class Puppet::HTTP::Service::FileServer < Puppet::HTTP::Service
130
122
  [response, deserialize_multiple(response, Puppet::FileServing::Metadata)]
131
123
  end
132
124
 
133
- #
134
- # @api private
135
- #
136
- # Submit a GET request to the server to retrieve content of a file
125
+ # Submit a GET request to the server to retrieve content of a file.
137
126
  #
138
127
  # @param [String] path path to the file to retrieve data from
139
128
  # @param [String] environment the name of the environment we are operating in
@@ -142,6 +131,8 @@ class Puppet::HTTP::Service::FileServer < Puppet::HTTP::Service
142
131
  #
143
132
  # @return [Puppet::HTTP::Response] The request response
144
133
  #
134
+ # @api public
135
+ #
145
136
  def get_file_content(path:, environment:, &block)
146
137
  validate_path(path)
147
138
 
@@ -163,10 +154,8 @@ class Puppet::HTTP::Service::FileServer < Puppet::HTTP::Service
163
154
  response
164
155
  end
165
156
 
166
- #
167
- # @api private
168
- #
169
- # Submit a GET request to
157
+ # Submit a GET request to retrieve file content using the `static_file_content` API
158
+ # uniquely identified by (`code_id`, `environment`, `path`).
170
159
  #
171
160
  # @param [String] path path to the file to retrieve data from
172
161
  # @param [String] environment the name of the environment we are operating in
@@ -176,6 +165,8 @@ class Puppet::HTTP::Service::FileServer < Puppet::HTTP::Service
176
165
  #
177
166
  # @return [Puppet::HTTP::Response] The request response
178
167
  #
168
+ # @api public
169
+ #
179
170
  def get_static_file_content(path:, environment:, code_id:, &block)
180
171
  validate_path(path)
181
172
 
@@ -0,0 +1,53 @@
1
+ # The puppetserver service.
2
+ #
3
+ # @api public
4
+ #
5
+ class Puppet::HTTP::Service::Puppetserver < Puppet::HTTP::Service
6
+
7
+ # Use `Puppet::HTTP::Session.route_to(:puppetserver)` to create or get an instance of this class.
8
+ #
9
+ # @param [Puppet::HTTP::Client] client
10
+ # @param [Puppet::HTTP::Session] session
11
+ # @param [String] server (`Puppet[:server]`) If an explicit server is given,
12
+ # create a service using that server. If server is nil, the default value
13
+ # is used to create the service.
14
+ # @param [Integer] port (`Puppet[:masterport]`) If an explicit port is given, create
15
+ # a service using that port. If port is nil, the default value is used to
16
+ # create the service.
17
+ #
18
+ def initialize(client, session, server, port)
19
+ url = build_url('', server || Puppet[:server], port || Puppet[:serverport])
20
+ super(client, session, url)
21
+ end
22
+
23
+ # Request the puppetserver's simple status.
24
+ #
25
+ # @param [Puppet::SSL::SSLContext] ssl_context to use when establishing
26
+ # the connection.
27
+ # @return Puppet::HTTP::Response The HTTP response
28
+ #
29
+ # @api public
30
+ #
31
+ def get_simple_status(ssl_context: nil)
32
+ request_path = "/status/v1/simple/server"
33
+
34
+ begin
35
+ response = @client.get(
36
+ with_base_url(request_path),
37
+ headers: add_puppet_headers({}),
38
+ options: {ssl_context: ssl_context}
39
+ )
40
+
41
+ process_response(response)
42
+ rescue Puppet::HTTP::ResponseError => e
43
+ if e.response.code == 404 && e.response.url.path == "/status/v1/simple/server"
44
+ request_path = "/status/v1/simple/master"
45
+ retry
46
+ else
47
+ raise e
48
+ end
49
+ end
50
+
51
+ [response, response.body.to_s]
52
+ end
53
+ end
@@ -1,16 +1,13 @@
1
+ # The Report service is used to submit run reports to the report server.
1
2
  #
2
- # @api private
3
- #
4
- # The Report service is used to submit run reports to the report server
3
+ # @api public
5
4
  #
6
5
  class Puppet::HTTP::Service::Report < Puppet::HTTP::Service
7
6
 
8
- # @api private
9
7
  # @return [String] Default API for the report service
10
8
  API = '/puppet/v3'.freeze
11
9
 
12
- #
13
- # @api private
10
+ # Use `Puppet::HTTP::Session.route_to(:report)` to create or get an instance of this class.
14
11
  #
15
12
  # @param [Puppet::HTTP::Client] client
16
13
  # @param [Puppet::HTTP::Session] session
@@ -21,15 +18,14 @@ class Puppet::HTTP::Service::Report < Puppet::HTTP::Service
21
18
  # a service using that port. If port is nil, the default value is used to
22
19
  # create the service.
23
20
  #
21
+ # @api private
22
+ #
24
23
  def initialize(client, session, server, port)
25
24
  url = build_url(API, server || Puppet[:report_server], port || Puppet[:report_port])
26
25
  super(client, session, url)
27
26
  end
28
27
 
29
- #
30
- # @api private
31
- #
32
- # Submit a report to the report server
28
+ # Submit a report to the report server.
33
29
  #
34
30
  # @param [String] name the name of the report being submitted
35
31
  # @param [Puppet::Transaction::Report] report run report to be submitted
@@ -37,6 +33,8 @@ class Puppet::HTTP::Service::Report < Puppet::HTTP::Service
37
33
  #
38
34
  # @return [Puppet::HTTP::Response] response returned by the server
39
35
  #
36
+ # @api public
37
+ #
40
38
  def put_report(name, report, environment:)
41
39
  formatter = Puppet::Network::FormatHandler.format_for(Puppet[:preferred_serialization_format])
42
40
  headers = add_puppet_headers(
@@ -1,8 +1,6 @@
1
- #
2
- # @api private
3
- #
4
1
  # The session is the mechanism by which services may be connected to and accessed.
5
2
  #
3
+ # @api public
6
4
  class Puppet::HTTP::Session
7
5
  # capabilities for a site
8
6
  CAP_LOCALES = 'locales'.freeze
@@ -14,16 +12,15 @@ class Puppet::HTTP::Session
14
12
  # puppet version where JSON was enabled by default
15
13
  SUPPORTED_JSON_DEFAULT = Gem::Version.new("5.0.0")
16
14
 
17
- #
18
- # @api private
19
- #
20
15
  # Create a new HTTP session. The session is the mechanism by which services
21
- # may be connected to and accessed.
16
+ # may be connected to and accessed. Sessions should be created using
17
+ # `Puppet::HTTP::Client#create_session`.
22
18
  #
23
19
  # @param [Puppet::HTTP::Client] client the container for this session
24
20
  # @param [Array<Puppet::HTTP::Resolver>] resolvers array of resolver strategies
25
21
  # to implement.
26
22
  #
23
+ # @api private
27
24
  def initialize(client, resolvers)
28
25
  @client = client
29
26
  @resolvers = resolvers
@@ -31,9 +28,6 @@ class Puppet::HTTP::Session
31
28
  @server_versions = {}
32
29
  end
33
30
 
34
- #
35
- # @api private
36
- #
37
31
  # If an explicit server and port are specified on the command line or
38
32
  # configuration file, this method always returns a Service with that host and
39
33
  # port. Otherwise, we walk the list of resolvers in priority order:
@@ -45,12 +39,13 @@ class Puppet::HTTP::Session
45
39
  # is cached and returned if `route_to` is called again.
46
40
  #
47
41
  # @param [Symbol] name the service to resolve
48
- # @param [URI] url (nil) optional explicit url to use, if it is already known
49
- # @param [Puppet::SSL::SSLContext] ssl_context ssl_context ssl context to be
42
+ # @param [URI] url optional explicit url to use, if it is already known
43
+ # @param [Puppet::SSL::SSLContext] ssl_context ssl context to be
50
44
  # used for connections
51
45
  #
52
46
  # @return [Puppet::HTTP::Service] the resolved service
53
47
  #
48
+ # @api public
54
49
  def route_to(name, url: nil, ssl_context: nil)
55
50
  raise ArgumentError, "Unknown service #{name}" unless Puppet::HTTP::Service.valid_name?(name)
56
51
 
@@ -64,42 +59,38 @@ class Puppet::HTTP::Session
64
59
  cached = @resolved_services[name]
65
60
  return cached if cached
66
61
 
67
- resolution_exceptions = []
68
- error_handler = proc { |e| resolution_exceptions << e }
62
+ canceled = false
63
+ canceled_handler = lambda { |cancel| canceled = cancel }
69
64
 
70
65
  @resolvers.each do |resolver|
71
66
  Puppet.debug("Resolving service '#{name}' using #{resolver.class}")
72
- service = resolver.resolve(self, name, ssl_context: ssl_context, error_handler: error_handler)
67
+ service = resolver.resolve(self, name, ssl_context: ssl_context, canceled_handler: canceled_handler)
73
68
  if service
74
69
  @resolved_services[name] = service
75
70
  Puppet.debug("Resolved service '#{name}' to #{service.url}")
76
71
  return service
72
+ elsif canceled
73
+ break
77
74
  end
78
75
  end
79
76
 
80
- resolution_exceptions.each { |e| Puppet.log_exception(e) }
81
77
  raise Puppet::HTTP::RouteError, "No more routes to #{name}"
82
78
  end
83
79
 
84
- #
85
- # @api private
86
- #
87
80
  # Collect per-site server versions. This will allow us to modify future
88
81
  # requests based on the version of puppetserver we are talking to.
89
82
  #
90
83
  # @param [Puppet::HTTP::Response] response the request response containing headers
91
84
  #
85
+ # @api private
92
86
  def process_response(response)
93
87
  version = response[Puppet::HTTP::HEADER_PUPPET_VERSION]
94
88
  if version
95
- site = Puppet::Network::HTTP::Site.from_uri(response.url)
89
+ site = Puppet::HTTP::Site.from_uri(response.url)
96
90
  @server_versions[site] = version
97
91
  end
98
92
  end
99
93
 
100
- #
101
- # @api private
102
- #
103
94
  # Determine if a session supports a capability. Depending on the server version
104
95
  # we are talking to, we know certain features are available or not. These
105
96
  # specifications are defined here so we can modify our requests appropriately.
@@ -109,13 +100,14 @@ class Puppet::HTTP::Session
109
100
  #
110
101
  # @return [Boolean]
111
102
  #
103
+ # @api public
112
104
  def supports?(name, capability)
113
105
  raise ArgumentError, "Unknown service #{name}" unless Puppet::HTTP::Service.valid_name?(name)
114
106
 
115
107
  service = @resolved_services[name]
116
108
  return false unless service
117
109
 
118
- site = Puppet::Network::HTTP::Site.from_uri(service.url)
110
+ site = Puppet::HTTP::Site.from_uri(service.url)
119
111
  server_version = @server_versions[site]
120
112
 
121
113
  case capability
@@ -4,8 +4,7 @@
4
4
  # for the second.
5
5
  #
6
6
  # @api private
7
- #
8
- class Puppet::Network::HTTP::Site
7
+ class Puppet::HTTP::Site
9
8
  attr_reader :scheme, :host, :port
10
9
 
11
10
  def self.from_uri(uri)
@@ -75,7 +75,7 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
75
75
 
76
76
  # Is our compiler part of a network, or are we just local?
77
77
  def networked?
78
- Puppet.run_mode.master?
78
+ Puppet.run_mode.server?
79
79
  end
80
80
 
81
81
  private
@@ -5,8 +5,6 @@ class Puppet::Resource::Catalog::Rest < Puppet::Indirector::REST
5
5
  desc "Find resource catalogs over HTTP via REST."
6
6
 
7
7
  def find(request)
8
- return super unless use_http_client?
9
-
10
8
  checksum_type = if request.options[:checksum_type]
11
9
  request.options[:checksum_type].split('.')
12
10
  else
@@ -30,11 +28,11 @@ class Puppet::Resource::Catalog::Rest < Puppet::Indirector::REST
30
28
  if e.response.code == 404
31
29
  return nil unless request.options[:fail_on_404]
32
30
 
33
- _, body = parse_response(e.response.nethttp)
31
+ _, body = parse_response(e.response)
34
32
  msg = _("Find %{uri} resulted in 404 with the message: %{body}") % { uri: elide(e.response.url.path, 100), body: body }
35
33
  raise Puppet::Error, msg
36
34
  else
37
- raise convert_to_http_error(e.response.nethttp)
35
+ raise convert_to_http_error(e.response)
38
36
  end
39
37
  end
40
38
  end
@@ -22,7 +22,7 @@ class Puppet::Indirector::Exec < Puppet::Indirector::Terminus
22
22
  end
23
23
 
24
24
  if output =~ /\A\s*\Z/ # all whitespace
25
- Puppet.debug "Empty response for #{name} from #{self.name} terminus"
25
+ Puppet.debug { "Empty response for #{name} from #{self.name} terminus" }
26
26
  return nil
27
27
  else
28
28
  return output
@@ -0,0 +1,60 @@
1
+ # module containing common methods used by json and yaml facts indirection terminus
2
+ module Puppet::Indirector::FactSearch
3
+ def node_matches?(facts, options)
4
+ options.each do |key, value|
5
+ type, name, operator = key.to_s.split(".")
6
+ operator ||= 'eq'
7
+
8
+ return false unless node_matches_option?(type, name, operator, value, facts)
9
+ end
10
+ return true
11
+ end
12
+
13
+ def node_matches_option?(type, name, operator, value, facts)
14
+ case type
15
+ when "meta"
16
+ case name
17
+ when "timestamp"
18
+ compare_timestamp(operator, facts.timestamp, Time.parse(value))
19
+ end
20
+ when "facts"
21
+ compare_facts(operator, facts.values[name], value)
22
+ end
23
+ end
24
+
25
+ def compare_facts(operator, value1, value2)
26
+ return false unless value1
27
+
28
+ case operator
29
+ when "eq"
30
+ value1.to_s == value2.to_s
31
+ when "le"
32
+ value1.to_f <= value2.to_f
33
+ when "ge"
34
+ value1.to_f >= value2.to_f
35
+ when "lt"
36
+ value1.to_f < value2.to_f
37
+ when "gt"
38
+ value1.to_f > value2.to_f
39
+ when "ne"
40
+ value1.to_s != value2.to_s
41
+ end
42
+ end
43
+
44
+ def compare_timestamp(operator, value1, value2)
45
+ case operator
46
+ when "eq"
47
+ value1 == value2
48
+ when "le"
49
+ value1 <= value2
50
+ when "ge"
51
+ value1 >= value2
52
+ when "lt"
53
+ value1 < value2
54
+ when "gt"
55
+ value1 > value2
56
+ when "ne"
57
+ value1 != value2
58
+ end
59
+ end
60
+ end