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
@@ -2,7 +2,6 @@ module Puppet::Network::HTTP
2
2
  end
3
3
 
4
4
  require 'puppet/network/http'
5
- require 'puppet/network/rights'
6
5
  require 'puppet/util/profiler'
7
6
  require 'puppet/util/profiler/aggregate'
8
7
  require 'resolv'
@@ -67,11 +67,11 @@ class Puppet::Network::HTTP::Route
67
67
  end
68
68
 
69
69
  def matches?(request)
70
- Puppet.debug("Evaluating match for #{self.inspect}")
70
+ Puppet.debug { "Evaluating match for #{self.inspect}" }
71
71
  if match(request.routing_path)
72
72
  return true
73
73
  else
74
- Puppet.debug("Did not match path (#{request.routing_path.inspect})")
74
+ Puppet.debug { "Did not match path (#{request.routing_path.inspect})" }
75
75
  end
76
76
  return false
77
77
  end
@@ -1,19 +1,15 @@
1
1
  require 'puppet/network/http/connection'
2
- require 'puppet/network/http/connection_adapter'
3
- require 'puppet/util/platform'
4
2
 
5
3
  module Puppet::Network; end
6
4
 
7
- # This module contains the factory methods that should be used for getting a
8
- # {Puppet::Network::HTTP::Connection} instance. The pool may return a new
9
- # connection or a persistent cached connection, depending on the underlying
10
- # pool implementation in use.
5
+ # This module is deprecated.
11
6
  #
12
7
  # @api public
8
+ # @deprecated Use {Puppet::HTTP::Client} instead.
13
9
  #
14
10
  module Puppet::Network::HttpPool
15
11
 
16
- @http_client_class = Puppet::Network::HTTP::ConnectionAdapter
12
+ @http_client_class = Puppet::Network::HTTP::Connection
17
13
 
18
14
  def self.http_client_class
19
15
  @http_client_class
@@ -30,37 +26,20 @@ module Puppet::Network::HttpPool
30
26
  # @param verify_peer [Boolean] Whether to verify the peer credentials, if possible. Verification will not take place if the CA certificate is missing.
31
27
  # @return [Puppet::Network::HTTP::Connection]
32
28
  #
33
- # @deprecated Use {#http_connection} instead.
29
+ # @deprecated Use {Puppet.runtime[:http]} instead.
34
30
  # @api public
35
31
  #
36
32
  def self.http_instance(host, port, use_ssl = true, verify_peer = true)
37
- verifier = if verify_peer
38
- Puppet::SSL::Validator.default_validator()
39
- else
40
- Puppet::SSL::Validator.no_validator()
41
- end
33
+ Puppet.warn_once('deprecations', self, "The method 'Puppet::Network::HttpPool.http_instance' is deprecated. Use Puppet.runtime[:http] instead")
42
34
 
43
- http_client_class.new(host, port,
44
- :use_ssl => use_ssl,
45
- :verify => verifier)
46
- end
47
-
48
- # Get an http connection that will be secured with SSL and have the
49
- # connection verified with the given verifier
50
- #
51
- # @param host [String] the DNS name to connect to
52
- # @param port [Integer] the port to connect to
53
- # @param verifier [#setup_connection, #peer_certs, #verify_errors] An object that will setup the appropriate
54
- # verification on a Net::HTTP instance and report any errors and the certificates used.
55
- # @return [Puppet::Network::HTTP::Connection]
56
- #
57
- # @deprecated Use {#http_connection} instead.
58
- # @api public
59
- #
60
- def self.http_ssl_instance(host, port, verifier = Puppet::SSL::Validator.default_validator())
61
- http_client_class.new(host, port,
62
- :use_ssl => true,
63
- :verify => verifier)
35
+ if verify_peer
36
+ verifier = Puppet::SSL::Verifier.new(host, nil)
37
+ http_client_class.new(host, port, use_ssl: use_ssl, verifier: verifier)
38
+ else
39
+ ssl = Puppet::SSL::SSLProvider.new
40
+ verifier = Puppet::SSL::Verifier.new(host, ssl.create_insecure_context)
41
+ http_client_class.new(host, port, use_ssl: use_ssl, verifier: verifier)
42
+ end
64
43
  end
65
44
 
66
45
  # Retrieve a connection for the given host and port.
@@ -72,9 +51,12 @@ module Puppet::Network::HttpPool
72
51
  # when making HTTPS connections. Required when `use_ssl` is `true`.
73
52
  # @return [Puppet::Network::HTTP::Connection]
74
53
  #
54
+ # @deprecated Use {Puppet.runtime[:http]} instead.
75
55
  # @api public
76
56
  #
77
57
  def self.connection(host, port, use_ssl: true, ssl_context: nil)
58
+ Puppet.warn_once('deprecations', self, "The method 'Puppet::Network::HttpPool.connection' is deprecated. Use Puppet.runtime[:http] instead")
59
+
78
60
  if use_ssl
79
61
  unless ssl_context
80
62
  # TRANSLATORS 'ssl_context' is an argument and should not be translated
@@ -183,36 +183,7 @@ class Puppet::Node
183
183
  # Calculate the list of names we might use for looking
184
184
  # up our node. This is only used for AST nodes.
185
185
  def names
186
- return [name] if Puppet.settings[:strict_hostname_checking]
187
-
188
- names = []
189
-
190
- names += split_name(name) if name.include?(".")
191
-
192
- # First, get the fqdn
193
- fqdn = parameters["fqdn"]
194
- unless fqdn
195
- if parameters["hostname"] and parameters["domain"]
196
- fqdn = parameters["hostname"] + "." + parameters["domain"]
197
- else
198
- Puppet.warning _("Host is missing hostname and/or domain: %{name}") % { name: name }
199
- end
200
- end
201
-
202
- # Now that we (might) have the fqdn, add each piece to the name
203
- # list to search, in order of longest to shortest.
204
- names += split_name(fqdn) if fqdn
205
-
206
- # And make sure the node name is first, since that's the most
207
- # likely usage.
208
- # The name is usually the Certificate CN, but it can be
209
- # set to the 'facter' hostname instead.
210
- if Puppet[:node_name] == 'cert'
211
- names.unshift name
212
- else
213
- names.unshift parameters["hostname"]
214
- end
215
- names.uniq
186
+ @names ||= [name]
216
187
  end
217
188
 
218
189
  def split_name(name)
@@ -266,7 +266,7 @@ class Puppet::Node::Environment
266
266
  # @param name [String] The module name
267
267
  # @return [Puppet::Module, nil] The module if found, else nil
268
268
  def module(name)
269
- modules.find {|mod| mod.name == name}
269
+ modules_by_name[name]
270
270
  end
271
271
 
272
272
  # Locate a module instance by the full forge name (EG authorname/module)
@@ -298,7 +298,7 @@ class Puppet::Node::Environment
298
298
  if @modules.nil?
299
299
  module_references = []
300
300
  project = Puppet.lookup(:bolt_project) { nil }
301
- seen_modules = if project
301
+ seen_modules = if project && project.load_as_module?
302
302
  module_references << project.to_h
303
303
  { project.name => true }
304
304
  else
@@ -327,6 +327,12 @@ class Puppet::Node::Environment
327
327
  @modules
328
328
  end
329
329
 
330
+ # @api private
331
+ def modules_by_name
332
+ @modules_by_name ||= Hash[modules.map { |mod| [mod.name, mod] }]
333
+ end
334
+ private :modules_by_name
335
+
330
336
  # Generate a warning if the given directory in a module path entry is named `lib`.
331
337
  #
332
338
  # @api private
@@ -335,9 +341,10 @@ class Puppet::Node::Environment
335
341
  # @param name [String] The directory name
336
342
  def warn_about_mistaken_path(path, name)
337
343
  if name == "lib"
338
- Puppet.debug("Warning: Found directory named 'lib' in module path ('#{path}/lib'); unless " +
339
- "you are expecting to load a module named 'lib', your module path may be set " +
340
- "incorrectly.")
344
+ Puppet.debug {
345
+ "Warning: Found directory named 'lib' in module path ('#{path}/lib'); unless you \
346
+ are expecting to load a module named 'lib', your module path may be set incorrectly."
347
+ }
341
348
  end
342
349
  end
343
350
 
@@ -116,8 +116,25 @@ class Puppet::Node::Facts
116
116
  @timestamp = Time.now
117
117
  end
118
118
 
119
+ def to_yaml
120
+ facts_to_display = Psych.parse_stream(YAML.dump(self))
121
+ quote_special_strings(facts_to_display)
122
+ end
123
+
119
124
  private
120
125
 
126
+ def quote_special_strings(fact_hash)
127
+ fact_hash.grep(Psych::Nodes::Scalar).each do |node|
128
+ next unless node.value =~ /:/
129
+
130
+ node.plain = false
131
+ node.quoted = true
132
+ node.style = Psych::Nodes::Scalar::DOUBLE_QUOTED
133
+ end
134
+
135
+ fact_hash.yaml
136
+ end
137
+
121
138
  def sanitize_fact(fact)
122
139
  if fact.is_a? Hash then
123
140
  ret = {}
@@ -4,6 +4,8 @@
4
4
  #
5
5
  # @api public
6
6
  #
7
+ module Puppet
8
+ module Pal
7
9
  class JsonCatalogEncoder
8
10
  # Is the resulting Json pretty printed or not.
9
11
  attr_reader :pretty
@@ -65,3 +67,5 @@ class JsonCatalogEncoder
65
67
  end
66
68
  private :possibly_filtered_catalog
67
69
  end
70
+ end
71
+ end
@@ -5,6 +5,7 @@ require 'puppet'
5
5
  require 'puppet/parser/script_compiler'
6
6
  require 'puppet/parser/catalog_compiler'
7
7
 
8
+ module Puppet
8
9
  # This is the main entry point for "Puppet As a Library" PAL.
9
10
  # This file should be required instead of "puppet"
10
11
  # Initially, this will require ALL of puppet - over time this will change as the monolithical "puppet" is broken up
@@ -24,7 +25,7 @@ require 'puppet/parser/catalog_compiler'
24
25
  # end
25
26
  # # The result is what 'mymodule::myfunction' returns
26
27
  #
27
- module Puppet
28
+ # @api public
28
29
  module Pal
29
30
 
30
31
  # Defines a context in which multiple operations in an env with a script compiler can be performed in a given block.
@@ -49,6 +50,7 @@ module Pal
49
50
  # If given at the environment level, the facts given here are merged with higher priority.
50
51
  # @param variables [Hash] optional map of fully qualified variable name to value. If given at the environment level, the variables
51
52
  # given here are merged with higher priority.
53
+ # @param set_local_facts [Boolean] when true, the $facts, $server_facts, and $trusted variables are set for the scope.
52
54
  # @param block [Proc] the block performing operations on compiler
53
55
  # @return [Object] what the block returns
54
56
  # @yieldparam [Puppet::Pal::ScriptCompiler] compiler, a ScriptCompiler to perform operations on.
@@ -57,8 +59,9 @@ module Pal
57
59
  configured_by_env: false,
58
60
  manifest_file: nil,
59
61
  code_string: nil,
60
- facts: nil,
61
- variables: nil,
62
+ facts: {},
63
+ variables: {},
64
+ set_local_facts: true,
62
65
  &block
63
66
  )
64
67
  # TRANSLATORS: do not translate variable name strings in these assertions
@@ -91,7 +94,14 @@ module Pal
91
94
 
92
95
  # If manifest_file is nil, the #main method will use the env configured manifest
93
96
  # to do things in the block while a Script Compiler is in effect
94
- main(manifest_file, facts, variables, :script, &block)
97
+ main(
98
+ manifest: manifest_file,
99
+ facts: facts,
100
+ variables: variables,
101
+ internal_compiler_class: :script,
102
+ set_local_facts: set_local_facts,
103
+ &block
104
+ )
95
105
  ensure
96
106
  Puppet[:tasks] = previous_tasks_value
97
107
  Puppet[:code] = previous_code_value
@@ -155,8 +165,9 @@ module Pal
155
165
  configured_by_env: false,
156
166
  manifest_file: nil,
157
167
  code_string: nil,
158
- facts: nil,
159
- variables: nil,
168
+ facts: {},
169
+ variables: {},
170
+ target_variables: {},
160
171
  &block
161
172
  )
162
173
  # TRANSLATORS: do not translate variable name strings in these assertions
@@ -191,7 +202,15 @@ module Pal
191
202
 
192
203
  # If manifest_file is nil, the #main method will use the env configured manifest
193
204
  # to do things in the block while a Script Compiler is in effect
194
- main(manifest_file, facts, variables, :catalog, &block)
205
+ main(
206
+ manifest: manifest_file,
207
+ facts: facts,
208
+ variables: variables,
209
+ target_variables: target_variables,
210
+ internal_compiler_class: :catalog,
211
+ set_local_facts: false,
212
+ &block
213
+ )
195
214
  ensure
196
215
  # Clean up after ourselves
197
216
  Puppet[:tasks] = previous_tasks_value
@@ -256,6 +275,7 @@ module Pal
256
275
  # @return [Object] returns what the given block returns
257
276
  # @yieldparam [Puppet::Pal] context, a context that responds to Puppet::Pal methods
258
277
  #
278
+ # @api public
259
279
  def self.in_environment(env_name,
260
280
  modulepath: nil,
261
281
  pre_modulepath: [],
@@ -379,7 +399,14 @@ module Pal
379
399
  # Picks up information from the puppet context and configures a script compiler which is given to
380
400
  # the provided block
381
401
  #
382
- def self.main(manifest, facts, variables, internal_compiler_class)
402
+ def self.main(
403
+ manifest: nil,
404
+ facts: {},
405
+ variables: {},
406
+ target_variables: {},
407
+ internal_compiler_class: nil,
408
+ set_local_facts: true
409
+ )
383
410
  # Configure the load path
384
411
  env = Puppet.lookup(:pal_env)
385
412
  env.each_plugin_directory do |dir|
@@ -395,14 +422,11 @@ module Pal
395
422
  pal_variables = Puppet.lookup(:pal_variables)
396
423
 
397
424
  overrides = {}
425
+
398
426
  unless facts.nil? || facts.empty?
399
427
  pal_facts = pal_facts.merge(facts)
400
428
  overrides[:pal_facts] = pal_facts
401
429
  end
402
- unless variables.nil? || variables.empty?
403
- pal_variables = pal_variables.merge(variables)
404
- overrides[:pal_variables] = pal_variables
405
- end
406
430
 
407
431
  prepare_node_facts(node, pal_facts)
408
432
 
@@ -434,15 +458,38 @@ module Pal
434
458
  overrides[:pal_catalog_compiler] = overrides[:pal_compiler] = pal_compiler
435
459
  end
436
460
 
461
+ # When scripting the trusted data are always local; default is to set them anyway
462
+ # When compiling for a catalog, the catalog compiler does this
463
+ if set_local_facts
464
+ compiler.topscope.set_trusted(node.trusted_data)
465
+
466
+ # Server facts are always about the local node's version etc.
467
+ compiler.topscope.set_server_facts(node.server_facts)
468
+
469
+ # Set $facts for the node running the script
470
+ facts_hash = node.facts.nil? ? {} : node.facts.values
471
+ compiler.topscope.set_facts(facts_hash)
472
+
473
+ # create the $settings:: variables
474
+ compiler.topscope.merge_settings(node.environment.name, false)
475
+ end
476
+
437
477
  # Make compiler available to Puppet#lookup and injection in functions
438
478
  # TODO: The compiler instances should be available under non PAL use as well!
439
479
  # TRANSLATORS: Do not translate, symbolic name
440
480
  Puppet.override(overrides, "PAL::with_#{internal_compiler_class}_compiler") do
441
481
  compiler.compile do | compiler_yield |
442
- # In case the varaibles passed to the compiler are PCore types defined in modules, they
482
+ # In case the variables passed to the compiler are PCore types defined in modules, they
443
483
  # need to be deserialized and added from within the this scope, so that loaders are
444
484
  # available during deserizlization.
445
- add_variables(compiler.topscope, Puppet::Pops::Serialization::FromDataConverter.convert(pal_variables))
485
+ pal_variables = Puppet::Pops::Serialization::FromDataConverter.convert(pal_variables)
486
+ variables = Puppet::Pops::Serialization::FromDataConverter.convert(variables)
487
+
488
+ # Merge together target variables and plan variables. This will also shadow any
489
+ # collisions with facts and emit a warning.
490
+ topscope_vars = pal_variables.merge(merge_vars(target_variables, variables, node.facts.values))
491
+
492
+ add_variables(compiler.topscope, topscope_vars)
446
493
  # wrap the internal compiler to prevent it from leaking in the PAL API
447
494
  if block_given?
448
495
  yield(pal_compiler)
@@ -462,6 +509,38 @@ module Pal
462
509
  end
463
510
  private_class_method :main
464
511
 
512
+ # Warn and remove variables that will be shadowed by facts of the same
513
+ # name, which are set in scope earlier.
514
+ def self.merge_vars(target_vars, vars, facts)
515
+ # First, shadow plan and target variables by facts of the same name
516
+ vars = shadow_vars(facts || {}, vars, 'fact', 'plan variable')
517
+ target_vars = shadow_vars(facts || {}, target_vars, 'fact', 'target variable')
518
+ # Then, shadow target variables by plan variables of the same name
519
+ target_vars = shadow_vars(vars, target_vars, 'plan variable', 'target variable')
520
+
521
+ target_vars.merge(vars)
522
+ end
523
+ private_class_method :merge_vars
524
+
525
+ def self.shadow_vars(vars, other_vars, vars_type, other_vars_type)
526
+ collisions, valid = other_vars.partition do |k, _|
527
+ vars.include?(k)
528
+ end
529
+
530
+ if collisions.any?
531
+ names = collisions.map { |k, _| "$#{k}" }.join(', ')
532
+ plural = collisions.length == 1 ? '' : 's'
533
+
534
+ Puppet.warning(
535
+ "#{other_vars_type.capitalize}#{plural} #{names} will be overridden by "\
536
+ "#{vars_type}#{plural} of the same name in the apply block"
537
+ )
538
+ end
539
+
540
+ valid.to_h
541
+ end
542
+ private_class_method :shadow_vars
543
+
465
544
  def self.create_internal_compiler(compiler_class_reference, node)
466
545
  case compiler_class_reference
467
546
  when :script
@@ -429,7 +429,7 @@ class Puppet::Parameter
429
429
  begin
430
430
  ret = unsafe_munge(value)
431
431
  rescue Puppet::Error => detail
432
- Puppet.debug "Reraising #{detail}"
432
+ Puppet.debug { "Reraising #{detail}" }
433
433
  raise
434
434
  rescue => detail
435
435
  raise Puppet::DevError, _("Munging failed for value %{value} in class %{class_name}: %{detail}") % { value: value.inspect, class_name: self.name, detail: detail }, detail.backtrace
@@ -92,14 +92,8 @@ class Puppet::Parser::AST::PopsBridge
92
92
  instantiate_HostClassDefinition(d, modname)
93
93
  when Puppet::Pops::Model::ResourceTypeDefinition
94
94
  instantiate_ResourceTypeDefinition(d, modname)
95
- when Puppet::Pops::Model::CapabilityMapping
96
- instantiate_CapabilityMapping(d, modname)
97
95
  when Puppet::Pops::Model::NodeDefinition
98
96
  instantiate_NodeDefinition(d, modname)
99
- when Puppet::Pops::Model::SiteDefinition
100
- instantiate_SiteDefinition(d, modname)
101
- when Puppet::Pops::Model::Application
102
- instantiate_ApplicationDefinition(d, modname)
103
97
  else
104
98
  loaders = Puppet::Pops::Loaders.loaders
105
99
  loaders.instantiate_definition(d, loaders.find_loader(modname))
@@ -214,27 +208,6 @@ class Puppet::Parser::AST::PopsBridge
214
208
  instance
215
209
  end
216
210
 
217
- def instantiate_CapabilityMapping(o, modname)
218
- # Use an intermediate 'capability_mapping' type to pass this info to the compiler where the
219
- # actual mapping takes place
220
- Puppet::Resource::Type.new(:capability_mapping, "#{o.component} #{o.kind} #{o.capability}", { :arguments => {
221
- 'component' => o.component,
222
- 'kind' => o.kind,
223
- 'blueprint' => {
224
- :capability => o.capability,
225
- :mappings => o.mappings.reduce({}) do |memo, mapping|
226
- memo[mapping.attribute_name] =
227
- Expression.new(:value => mapping.value_expr)
228
- memo
229
- end
230
- }}})
231
- end
232
-
233
- def instantiate_ApplicationDefinition(o, modname)
234
- args = args_from_definition(o, modname)
235
- Puppet::Resource::Type.new(:application, o.name, @context.merge(args))
236
- end
237
-
238
211
  def instantiate_NodeDefinition(o, modname)
239
212
  args = { :module_name => modname }
240
213
 
@@ -253,17 +226,6 @@ class Puppet::Parser::AST::PopsBridge
253
226
  end
254
227
  end
255
228
 
256
- def instantiate_SiteDefinition(o, modname)
257
- args = { :module_name => modname }
258
-
259
- unless is_nop?(o.body)
260
- args[:code] = Expression.new(:value => o.body)
261
- end
262
-
263
- args = @ast_transformer.merge_location(args, o)
264
- Puppet::Resource::Type.new(:site, 'site', @context.merge(args))
265
- end
266
-
267
229
  def code()
268
230
  Expression.new(:value => @value)
269
231
  end