puppet 6.14.0 → 6.19.0

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

Potentially problematic release.


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

Files changed (496) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -7
  3. data/Gemfile +4 -2
  4. data/Gemfile.lock +36 -34
  5. data/README.md +3 -4
  6. data/Rakefile +4 -12
  7. data/ext/windows/service/daemon.rb +3 -3
  8. data/lib/puppet.rb +33 -9
  9. data/lib/puppet/agent.rb +20 -14
  10. data/lib/puppet/agent/locker.rb +0 -7
  11. data/lib/puppet/application/agent.rb +25 -9
  12. data/lib/puppet/application/apply.rb +18 -20
  13. data/lib/puppet/application/device.rb +1 -1
  14. data/lib/puppet/application/doc.rb +1 -1
  15. data/lib/puppet/application/filebucket.rb +5 -14
  16. data/lib/puppet/application/lookup.rb +16 -4
  17. data/lib/puppet/application/plugin.rb +1 -0
  18. data/lib/puppet/application/ssl.rb +3 -3
  19. data/lib/puppet/configurer.rb +68 -24
  20. data/lib/puppet/configurer/downloader.rb +31 -10
  21. data/lib/puppet/configurer/plugin_handler.rb +1 -1
  22. data/lib/puppet/confine.rb +2 -2
  23. data/lib/puppet/confine/any.rb +1 -1
  24. data/lib/puppet/context/trusted_information.rb +14 -8
  25. data/lib/puppet/daemon.rb +13 -27
  26. data/lib/puppet/defaults.rb +141 -41
  27. data/lib/puppet/environments.rb +55 -15
  28. data/lib/puppet/face/catalog.rb +1 -1
  29. data/lib/puppet/face/config.rb +46 -16
  30. data/lib/puppet/face/facts.rb +1 -1
  31. data/lib/puppet/face/help.rb +29 -3
  32. data/lib/puppet/face/module/search.rb +5 -0
  33. data/lib/puppet/face/node.rb +3 -3
  34. data/lib/puppet/face/node/clean.rb +2 -2
  35. data/lib/puppet/face/plugin.rb +2 -2
  36. data/lib/puppet/face/status.rb +1 -1
  37. data/lib/puppet/feature/base.rb +1 -1
  38. data/lib/puppet/file_bucket/dipper.rb +1 -1
  39. data/lib/puppet/file_serving/http_metadata.rb +14 -2
  40. data/lib/puppet/file_serving/metadata.rb +4 -1
  41. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  42. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  43. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  44. data/lib/puppet/file_serving/terminus_selector.rb +7 -8
  45. data/lib/puppet/file_system/file_impl.rb +17 -13
  46. data/lib/puppet/file_system/uniquefile.rb +12 -16
  47. data/lib/puppet/forge.rb +1 -1
  48. data/lib/puppet/forge/cache.rb +1 -1
  49. data/lib/puppet/forge/repository.rb +4 -7
  50. data/lib/puppet/functions/call.rb +1 -1
  51. data/lib/puppet/functions/filter.rb +1 -0
  52. data/lib/puppet/functions/lstrip.rb +4 -4
  53. data/lib/puppet/functions/new.rb +8 -3
  54. data/lib/puppet/functions/reduce.rb +2 -4
  55. data/lib/puppet/functions/reverse_each.rb +1 -1
  56. data/lib/puppet/functions/rstrip.rb +4 -4
  57. data/lib/puppet/functions/step.rb +1 -1
  58. data/lib/puppet/functions/strip.rb +4 -4
  59. data/lib/puppet/gettext/config.rb +5 -5
  60. data/lib/puppet/gettext/module_translations.rb +4 -4
  61. data/lib/puppet/http.rb +3 -0
  62. data/lib/puppet/http/client.rb +215 -60
  63. data/lib/puppet/http/external_client.rb +90 -0
  64. data/lib/puppet/http/redirector.rb +43 -7
  65. data/lib/puppet/http/resolver.rb +43 -3
  66. data/lib/puppet/http/resolver/server_list.rb +66 -24
  67. data/lib/puppet/http/resolver/settings.rb +21 -1
  68. data/lib/puppet/http/resolver/srv.rb +28 -2
  69. data/lib/puppet/http/response.rb +82 -1
  70. data/lib/puppet/http/retry_after_handler.rb +39 -0
  71. data/lib/puppet/http/service.rb +70 -2
  72. data/lib/puppet/http/service/ca.rb +71 -9
  73. data/lib/puppet/http/service/compiler.rb +214 -12
  74. data/lib/puppet/http/service/file_server.rb +106 -5
  75. data/lib/puppet/http/service/puppetserver.rb +39 -0
  76. data/lib/puppet/http/service/report.rb +36 -3
  77. data/lib/puppet/http/session.rb +60 -8
  78. data/lib/puppet/indirector.rb +1 -1
  79. data/lib/puppet/indirector/catalog/compiler.rb +1 -1
  80. data/lib/puppet/indirector/catalog/rest.rb +2 -1
  81. data/lib/puppet/indirector/exec.rb +1 -1
  82. data/lib/puppet/indirector/facts/facter.rb +3 -3
  83. data/lib/puppet/indirector/facts/rest.rb +2 -1
  84. data/lib/puppet/indirector/facts/yaml.rb +1 -1
  85. data/lib/puppet/indirector/file_bucket_file/rest.rb +48 -0
  86. data/lib/puppet/indirector/file_content/http.rb +5 -0
  87. data/lib/puppet/indirector/file_content/rest.rb +1 -1
  88. data/lib/puppet/indirector/file_metadata/http.rb +28 -8
  89. data/lib/puppet/indirector/file_metadata/rest.rb +6 -4
  90. data/lib/puppet/indirector/hiera.rb +4 -0
  91. data/lib/puppet/indirector/indirection.rb +1 -1
  92. data/lib/puppet/indirector/json.rb +1 -1
  93. data/lib/puppet/indirector/msgpack.rb +1 -1
  94. data/lib/puppet/indirector/node/rest.rb +2 -1
  95. data/lib/puppet/indirector/report/processor.rb +2 -2
  96. data/lib/puppet/indirector/report/yaml.rb +23 -0
  97. data/lib/puppet/indirector/request.rb +5 -5
  98. data/lib/puppet/indirector/rest.rb +7 -1
  99. data/lib/puppet/indirector/status/rest.rb +2 -1
  100. data/lib/puppet/indirector/yaml.rb +1 -1
  101. data/lib/puppet/metatype/manager.rb +80 -80
  102. data/lib/puppet/module.rb +1 -2
  103. data/lib/puppet/network/format_support.rb +2 -2
  104. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  105. data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
  106. data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
  107. data/lib/puppet/network/http/base_pool.rb +6 -1
  108. data/lib/puppet/network/http/compression.rb +7 -0
  109. data/lib/puppet/network/http/connection.rb +2 -0
  110. data/lib/puppet/network/http/connection_adapter.rb +184 -0
  111. data/lib/puppet/network/http/nocache_pool.rb +1 -0
  112. data/lib/puppet/network/http/pool.rb +2 -4
  113. data/lib/puppet/network/http/route.rb +2 -2
  114. data/lib/puppet/network/http_pool.rb +2 -1
  115. data/lib/puppet/node/environment.rb +22 -5
  116. data/lib/puppet/node/facts.rb +17 -0
  117. data/lib/puppet/pal/catalog_compiler.rb +5 -0
  118. data/lib/puppet/pal/pal_impl.rb +30 -31
  119. data/lib/puppet/parameter.rb +1 -1
  120. data/lib/puppet/parser/ast/leaf.rb +5 -5
  121. data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
  122. data/lib/puppet/parser/compiler.rb +43 -33
  123. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
  124. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
  125. data/lib/puppet/parser/environment_compiler.rb +4 -1
  126. data/lib/puppet/parser/functions.rb +18 -9
  127. data/lib/puppet/parser/functions/create_resources.rb +11 -7
  128. data/lib/puppet/parser/functions/filter.rb +1 -0
  129. data/lib/puppet/parser/resource.rb +3 -2
  130. data/lib/puppet/parser/resource/param.rb +6 -0
  131. data/lib/puppet/parser/type_loader.rb +2 -2
  132. data/lib/puppet/pops/adaptable.rb +7 -13
  133. data/lib/puppet/pops/adapters.rb +8 -4
  134. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
  135. data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
  136. data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
  137. data/lib/puppet/pops/issues.rb +5 -0
  138. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
  139. data/lib/puppet/pops/loaders.rb +24 -15
  140. data/lib/puppet/pops/lookup/context.rb +1 -1
  141. data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
  142. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
  143. data/lib/puppet/pops/types/iterable.rb +34 -8
  144. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  145. data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
  146. data/lib/puppet/pops/validation/checker4_0.rb +29 -15
  147. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  148. data/lib/puppet/provider/file/windows.rb +1 -1
  149. data/lib/puppet/provider/group/windows_adsi.rb +3 -3
  150. data/lib/puppet/provider/package/aix.rb +17 -2
  151. data/lib/puppet/provider/package/apt.rb +98 -1
  152. data/lib/puppet/provider/package/aptitude.rb +1 -1
  153. data/lib/puppet/provider/package/dnfmodule.rb +61 -14
  154. data/lib/puppet/provider/package/dpkg.rb +1 -1
  155. data/lib/puppet/provider/package/gem.rb +45 -9
  156. data/lib/puppet/provider/package/pacman.rb +2 -5
  157. data/lib/puppet/provider/package/pip.rb +143 -48
  158. data/lib/puppet/provider/package/pip2.rb +17 -0
  159. data/lib/puppet/provider/package/pip3.rb +0 -2
  160. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  161. data/lib/puppet/provider/package/pkgng.rb +16 -4
  162. data/lib/puppet/provider/package/portage.rb +2 -2
  163. data/lib/puppet/provider/package/puppet_gem.rb +11 -2
  164. data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
  165. data/lib/puppet/provider/package/rpm.rb +6 -213
  166. data/lib/puppet/provider/package/yum.rb +101 -20
  167. data/lib/puppet/provider/package/zypper.rb +62 -1
  168. data/lib/puppet/provider/service/systemd.rb +22 -4
  169. data/lib/puppet/provider/service/windows.rb +23 -7
  170. data/lib/puppet/provider/user/aix.rb +1 -1
  171. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  172. data/lib/puppet/provider/user/useradd.rb +16 -5
  173. data/lib/puppet/provider/user/windows_adsi.rb +18 -1
  174. data/lib/puppet/reports/http.rb +15 -9
  175. data/lib/puppet/resource.rb +2 -1
  176. data/lib/puppet/resource/type.rb +10 -1
  177. data/lib/puppet/resource/type_collection.rb +20 -16
  178. data/lib/puppet/rest/route.rb +2 -2
  179. data/lib/puppet/runtime.rb +25 -2
  180. data/lib/puppet/settings.rb +20 -6
  181. data/lib/puppet/ssl.rb +1 -0
  182. data/lib/puppet/ssl/host.rb +4 -4
  183. data/lib/puppet/ssl/oids.rb +1 -0
  184. data/lib/puppet/ssl/ssl_context.rb +2 -2
  185. data/lib/puppet/ssl/ssl_provider.rb +20 -1
  186. data/lib/puppet/ssl/state_machine.rb +79 -37
  187. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  188. data/lib/puppet/ssl/verifier_adapter.rb +9 -1
  189. data/lib/puppet/test/test_helper.rb +19 -14
  190. data/lib/puppet/transaction.rb +2 -2
  191. data/lib/puppet/transaction/persistence.rb +1 -1
  192. data/lib/puppet/transaction/report.rb +14 -10
  193. data/lib/puppet/trusted_external.rb +29 -1
  194. data/lib/puppet/type.rb +21 -8
  195. data/lib/puppet/type/file.rb +40 -15
  196. data/lib/puppet/type/file/checksum.rb +4 -4
  197. data/lib/puppet/type/file/source.rb +35 -13
  198. data/lib/puppet/type/filebucket.rb +1 -1
  199. data/lib/puppet/type/notify.rb +2 -2
  200. data/lib/puppet/type/package.rb +41 -3
  201. data/lib/puppet/type/service.rb +59 -8
  202. data/lib/puppet/type/user.rb +19 -29
  203. data/lib/puppet/util.rb +41 -3
  204. data/lib/puppet/util/at_fork.rb +1 -1
  205. data/lib/puppet/util/autoload.rb +13 -25
  206. data/lib/puppet/util/character_encoding.rb +9 -5
  207. data/lib/puppet/util/checksums.rb +19 -4
  208. data/lib/puppet/util/connection.rb +8 -8
  209. data/lib/puppet/util/execution.rb +2 -2
  210. data/lib/puppet/util/fileparsing.rb +2 -2
  211. data/lib/puppet/util/instance_loader.rb +14 -10
  212. data/lib/puppet/util/log/destinations.rb +1 -10
  213. data/lib/puppet/util/package/version/debian.rb +175 -0
  214. data/lib/puppet/util/package/version/gem.rb +15 -0
  215. data/lib/puppet/util/package/version/pip.rb +167 -0
  216. data/lib/puppet/util/package/version/range.rb +53 -0
  217. data/lib/puppet/util/package/version/range/eq.rb +14 -0
  218. data/lib/puppet/util/package/version/range/gt.rb +14 -0
  219. data/lib/puppet/util/package/version/range/gt_eq.rb +14 -0
  220. data/lib/puppet/util/package/version/range/lt.rb +14 -0
  221. data/lib/puppet/util/package/version/range/lt_eq.rb +14 -0
  222. data/lib/puppet/util/package/version/range/min_max.rb +21 -0
  223. data/lib/puppet/util/package/version/range/simple.rb +11 -0
  224. data/lib/puppet/util/package/version/rpm.rb +73 -0
  225. data/lib/puppet/util/pidlock.rb +13 -7
  226. data/lib/puppet/util/platform.rb +5 -0
  227. data/lib/puppet/util/provider_features.rb +1 -1
  228. data/lib/puppet/util/reference.rb +1 -1
  229. data/lib/puppet/util/rpm_compare.rb +193 -0
  230. data/lib/puppet/util/run_mode.rb +5 -1
  231. data/lib/puppet/util/windows.rb +1 -0
  232. data/lib/puppet/util/windows/adsi.rb +2 -2
  233. data/lib/puppet/util/windows/api_types.rb +60 -33
  234. data/lib/puppet/util/windows/eventlog.rb +1 -6
  235. data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
  236. data/lib/puppet/util/windows/principal.rb +8 -6
  237. data/lib/puppet/util/windows/process.rb +15 -14
  238. data/lib/puppet/util/windows/registry.rb +11 -11
  239. data/lib/puppet/util/windows/security.rb +5 -4
  240. data/lib/puppet/util/windows/service.rb +43 -26
  241. data/lib/puppet/util/windows/sid.rb +3 -3
  242. data/lib/puppet/util/windows/user.rb +242 -8
  243. data/lib/puppet/version.rb +1 -1
  244. data/locales/puppet.pot +627 -507
  245. data/man/man5/puppet.conf.5 +93 -20
  246. data/man/man8/puppet-agent.8 +7 -4
  247. data/man/man8/puppet-apply.8 +1 -1
  248. data/man/man8/puppet-catalog.8 +1 -1
  249. data/man/man8/puppet-config.8 +6 -6
  250. data/man/man8/puppet-describe.8 +1 -1
  251. data/man/man8/puppet-device.8 +1 -1
  252. data/man/man8/puppet-doc.8 +1 -1
  253. data/man/man8/puppet-epp.8 +1 -1
  254. data/man/man8/puppet-facts.8 +1 -1
  255. data/man/man8/puppet-filebucket.8 +1 -1
  256. data/man/man8/puppet-generate.8 +1 -1
  257. data/man/man8/puppet-help.8 +6 -3
  258. data/man/man8/puppet-key.8 +1 -1
  259. data/man/man8/puppet-lookup.8 +2 -2
  260. data/man/man8/puppet-man.8 +1 -1
  261. data/man/man8/puppet-module.8 +4 -1
  262. data/man/man8/puppet-node.8 +4 -4
  263. data/man/man8/puppet-parser.8 +1 -1
  264. data/man/man8/puppet-plugin.8 +1 -1
  265. data/man/man8/puppet-report.8 +1 -1
  266. data/man/man8/puppet-resource.8 +1 -1
  267. data/man/man8/puppet-script.8 +1 -1
  268. data/man/man8/puppet-ssl.8 +1 -1
  269. data/man/man8/puppet-status.8 +2 -2
  270. data/man/man8/puppet.8 +2 -2
  271. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  272. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  273. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +67 -0
  274. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -0
  275. data/spec/fixtures/ssl/unknown-ca-key.pem +67 -0
  276. data/spec/fixtures/ssl/unknown-ca.pem +59 -0
  277. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  278. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  279. data/spec/fixtures/unit/provider/package/dnfmodule/{dnf-module-list-installed.txt → dnf-module-list.txt} +8 -0
  280. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
  281. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
  282. data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
  283. data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
  284. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
  285. data/spec/integration/application/agent_spec.rb +479 -0
  286. data/spec/integration/application/apply_spec.rb +279 -150
  287. data/spec/integration/application/config_spec.rb +74 -0
  288. data/spec/integration/application/doc_spec.rb +16 -6
  289. data/spec/integration/application/filebucket_spec.rb +239 -0
  290. data/spec/integration/application/help_spec.rb +42 -0
  291. data/spec/integration/application/lookup_spec.rb +13 -0
  292. data/spec/integration/application/module_spec.rb +68 -0
  293. data/spec/integration/application/plugin_spec.rb +123 -0
  294. data/spec/integration/configurer_spec.rb +14 -0
  295. data/spec/integration/data_binding_spec.rb +82 -0
  296. data/spec/integration/defaults_spec.rb +27 -3
  297. data/spec/integration/directory_environments_spec.rb +17 -17
  298. data/spec/integration/http/client_spec.rb +39 -40
  299. data/spec/integration/indirector/facts/facter_spec.rb +8 -6
  300. data/spec/integration/indirector/report/yaml.rb +83 -0
  301. data/spec/integration/network/http_pool_spec.rb +84 -19
  302. data/spec/integration/node/environment_spec.rb +15 -0
  303. data/spec/integration/parser/compiler_spec.rb +11 -0
  304. data/spec/integration/type/file_spec.rb +1 -1
  305. data/spec/integration/util/execution_spec.rb +22 -0
  306. data/spec/integration/util/windows/adsi_spec.rb +8 -3
  307. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
  308. data/spec/integration/util/windows/process_spec.rb +26 -32
  309. data/spec/integration/util/windows/registry_spec.rb +7 -7
  310. data/spec/integration/util/windows/user_spec.rb +47 -5
  311. data/spec/integration/util_spec.rb +7 -33
  312. data/spec/lib/puppet/test_ca.rb +2 -2
  313. data/spec/lib/puppet_spec/https.rb +16 -7
  314. data/spec/lib/puppet_spec/matchers.rb +0 -80
  315. data/spec/lib/puppet_spec/puppetserver.rb +127 -0
  316. data/spec/shared_contexts/https.rb +29 -0
  317. data/spec/shared_contexts/types_setup.rb +2 -0
  318. data/spec/unit/agent_spec.rb +80 -26
  319. data/spec/unit/application/agent_spec.rb +12 -9
  320. data/spec/unit/application/device_spec.rb +2 -2
  321. data/spec/unit/application/doc_spec.rb +2 -2
  322. data/spec/unit/application/face_base_spec.rb +6 -4
  323. data/spec/unit/application/facts_spec.rb +41 -10
  324. data/spec/unit/application/filebucket_spec.rb +22 -2
  325. data/spec/unit/application/man_spec.rb +52 -0
  326. data/spec/unit/application/resource_spec.rb +3 -1
  327. data/spec/unit/application/ssl_spec.rb +15 -2
  328. data/spec/unit/application_spec.rb +9 -4
  329. data/spec/unit/configurer/downloader_spec.rb +10 -0
  330. data/spec/unit/configurer/fact_handler_spec.rb +4 -4
  331. data/spec/unit/configurer_spec.rb +87 -38
  332. data/spec/unit/confine_spec.rb +2 -1
  333. data/spec/unit/context/trusted_information_spec.rb +25 -2
  334. data/spec/unit/daemon_spec.rb +5 -64
  335. data/spec/unit/defaults_spec.rb +24 -1
  336. data/spec/unit/environments_spec.rb +107 -32
  337. data/spec/unit/face/config_spec.rb +59 -1
  338. data/spec/unit/face/module/search_spec.rb +17 -0
  339. data/spec/unit/face/node_spec.rb +2 -2
  340. data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
  341. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  342. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  343. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  344. data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
  345. data/spec/unit/file_system/uniquefile_spec.rb +29 -0
  346. data/spec/unit/file_system_spec.rb +11 -2
  347. data/spec/unit/http/client_spec.rb +173 -59
  348. data/spec/unit/http/external_client_spec.rb +201 -0
  349. data/spec/unit/http/resolver_spec.rb +44 -5
  350. data/spec/unit/http/response_spec.rb +6 -0
  351. data/spec/unit/http/service/ca_spec.rb +27 -5
  352. data/spec/unit/http/service/compiler_spec.rb +186 -9
  353. data/spec/unit/http/service/file_server_spec.rb +37 -6
  354. data/spec/unit/http/service/puppetserver_spec.rb +82 -0
  355. data/spec/unit/http/service/report_spec.rb +5 -4
  356. data/spec/unit/http/service_spec.rb +3 -4
  357. data/spec/unit/http/session_spec.rb +48 -12
  358. data/spec/unit/indirector/catalog/compiler_spec.rb +1 -0
  359. data/spec/unit/indirector/catalog/json_spec.rb +1 -1
  360. data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
  361. data/spec/unit/indirector/facts/rest_spec.rb +1 -1
  362. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +82 -2
  363. data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
  364. data/spec/unit/indirector/file_metadata/rest_spec.rb +15 -14
  365. data/spec/unit/indirector/json_spec.rb +8 -8
  366. data/spec/unit/indirector/msgpack_spec.rb +8 -8
  367. data/spec/unit/indirector/node/rest_spec.rb +1 -1
  368. data/spec/unit/indirector/request_spec.rb +5 -5
  369. data/spec/unit/indirector/rest_spec.rb +14 -1
  370. data/spec/unit/indirector/status/rest_spec.rb +1 -1
  371. data/spec/unit/indirector/yaml_spec.rb +7 -7
  372. data/spec/unit/interface_spec.rb +3 -3
  373. data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
  374. data/spec/unit/network/format_support_spec.rb +3 -2
  375. data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
  376. data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
  377. data/spec/unit/network/http/connection_spec.rb +552 -190
  378. data/spec/unit/network/http/nocache_pool_spec.rb +22 -0
  379. data/spec/unit/network/http/pool_spec.rb +3 -3
  380. data/spec/unit/network/http_pool_spec.rb +63 -57
  381. data/spec/unit/network/http_spec.rb +1 -1
  382. data/spec/unit/node/environment_spec.rb +33 -0
  383. data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
  384. data/spec/unit/parser/environment_compiler_spec.rb +7 -0
  385. data/spec/unit/parser/scope_spec.rb +1 -1
  386. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
  387. data/spec/unit/pops/loaders/loaders_spec.rb +71 -1
  388. data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
  389. data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
  390. data/spec/unit/provider/exec_spec.rb +4 -3
  391. data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
  392. data/spec/unit/provider/package/aix_spec.rb +29 -0
  393. data/spec/unit/provider/package/apt_spec.rb +107 -0
  394. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  395. data/spec/unit/provider/package/dnfmodule_spec.rb +54 -15
  396. data/spec/unit/provider/package/dpkg_spec.rb +22 -7
  397. data/spec/unit/provider/package/gem_spec.rb +40 -0
  398. data/spec/unit/provider/package/openbsd_spec.rb +2 -0
  399. data/spec/unit/provider/package/pacman_spec.rb +6 -21
  400. data/spec/unit/provider/package/pip2_spec.rb +36 -0
  401. data/spec/unit/provider/package/pip_spec.rb +68 -19
  402. data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
  403. data/spec/unit/provider/package/pkgng_spec.rb +38 -0
  404. data/spec/unit/provider/package/portage_spec.rb +5 -0
  405. data/spec/unit/provider/package/puppet_gem_spec.rb +12 -1
  406. data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
  407. data/spec/unit/provider/package/rpm_spec.rb +0 -212
  408. data/spec/unit/provider/package/yum_spec.rb +274 -1
  409. data/spec/unit/provider/package/zypper_spec.rb +98 -0
  410. data/spec/unit/provider/service/base_spec.rb +2 -4
  411. data/spec/unit/provider/service/bsd_spec.rb +5 -1
  412. data/spec/unit/provider/service/daemontools_spec.rb +1 -1
  413. data/spec/unit/provider/service/debian_spec.rb +3 -5
  414. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  415. data/spec/unit/provider/service/gentoo_spec.rb +4 -5
  416. data/spec/unit/provider/service/init_spec.rb +46 -5
  417. data/spec/unit/provider/service/launchd_spec.rb +5 -6
  418. data/spec/unit/provider/service/openbsd_spec.rb +9 -0
  419. data/spec/unit/provider/service/openrc_spec.rb +4 -5
  420. data/spec/unit/provider/service/openwrt_spec.rb +2 -1
  421. data/spec/unit/provider/service/redhat_spec.rb +10 -1
  422. data/spec/unit/provider/service/runit_spec.rb +2 -1
  423. data/spec/unit/provider/service/smf_spec.rb +1 -1
  424. data/spec/unit/provider/service/src_spec.rb +3 -5
  425. data/spec/unit/provider/service/systemd_spec.rb +95 -18
  426. data/spec/unit/provider/service/upstart_spec.rb +4 -5
  427. data/spec/unit/provider/service/windows_spec.rb +50 -14
  428. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  429. data/spec/unit/provider/user/useradd_spec.rb +30 -16
  430. data/spec/unit/provider/user/windows_adsi_spec.rb +85 -3
  431. data/spec/unit/puppet_pal_2pec.rb +11 -0
  432. data/spec/unit/puppet_pal_catalog_spec.rb +43 -0
  433. data/spec/unit/puppet_spec.rb +33 -0
  434. data/spec/unit/reports/http_spec.rb +70 -52
  435. data/spec/unit/reports/store_spec.rb +17 -13
  436. data/spec/unit/resource_spec.rb +3 -3
  437. data/spec/unit/rest/route_spec.rb +4 -4
  438. data/spec/unit/settings_spec.rb +44 -22
  439. data/spec/unit/ssl/host_spec.rb +4 -2
  440. data/spec/unit/ssl/oids_spec.rb +1 -0
  441. data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
  442. data/spec/unit/ssl/state_machine_spec.rb +90 -14
  443. data/spec/unit/test/test_helper_spec.rb +17 -0
  444. data/spec/unit/transaction/persistence_spec.rb +15 -0
  445. data/spec/unit/transaction/report_spec.rb +7 -1
  446. data/spec/unit/type/file/source_spec.rb +4 -4
  447. data/spec/unit/type/file_spec.rb +122 -96
  448. data/spec/unit/type/filebucket_spec.rb +1 -1
  449. data/spec/unit/type/service_spec.rb +218 -8
  450. data/spec/unit/type/user_spec.rb +32 -3
  451. data/spec/unit/type_spec.rb +50 -0
  452. data/spec/unit/util/at_fork_spec.rb +2 -2
  453. data/spec/unit/util/autoload_spec.rb +2 -1
  454. data/spec/unit/util/character_encoding_spec.rb +4 -4
  455. data/spec/unit/util/checksums_spec.rb +16 -0
  456. data/spec/unit/util/command_line_spec.rb +11 -6
  457. data/spec/unit/util/log/destinations_spec.rb +1 -29
  458. data/spec/unit/util/package/version/debian_spec.rb +83 -0
  459. data/spec/unit/util/package/version/pip_spec.rb +464 -0
  460. data/spec/unit/util/package/version/range_spec.rb +175 -0
  461. data/spec/unit/util/package/version/rpm_spec.rb +121 -0
  462. data/spec/unit/util/pidlock_spec.rb +83 -47
  463. data/spec/unit/util/rpm_compare_spec.rb +196 -0
  464. data/spec/unit/util/run_mode_spec.rb +6 -6
  465. data/spec/unit/util/windows/adsi_spec.rb +4 -4
  466. data/spec/unit/util/windows/api_types_spec.rb +104 -40
  467. data/spec/unit/util/windows/service_spec.rb +4 -4
  468. data/spec/unit/util/windows/sid_spec.rb +2 -2
  469. data/spec/unit/util_spec.rb +3 -3
  470. data/spec/unit/x509/cert_provider_spec.rb +1 -1
  471. data/tasks/generate_cert_fixtures.rake +15 -1
  472. data/tasks/manpages.rake +5 -35
  473. metadata +90 -51
  474. data/spec/integration/faces/config_spec.rb +0 -91
  475. data/spec/integration/faces/documentation_spec.rb +0 -57
  476. data/spec/integration/faces/plugin_spec.rb +0 -63
  477. data/spec/integration/file_bucket/file_spec.rb +0 -50
  478. data/spec/integration/file_serving/content_spec.rb +0 -7
  479. data/spec/integration/file_serving/fileset_spec.rb +0 -12
  480. data/spec/integration/file_serving/metadata_spec.rb +0 -8
  481. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
  482. data/spec/integration/file_system/uniquefile_spec.rb +0 -26
  483. data/spec/integration/module_tool/forge_spec.rb +0 -64
  484. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  485. data/spec/integration/provider/service/init_spec.rb +0 -48
  486. data/spec/integration/provider/service/systemd_spec.rb +0 -25
  487. data/spec/integration/provider/service/windows_spec.rb +0 -50
  488. data/spec/integration/reference/providers_spec.rb +0 -21
  489. data/spec/integration/reports_spec.rb +0 -13
  490. data/spec/integration/ssl/certificate_request_spec.rb +0 -44
  491. data/spec/integration/ssl/host_spec.rb +0 -72
  492. data/spec/integration/ssl/key_spec.rb +0 -99
  493. data/spec/integration/test/test_helper_spec.rb +0 -31
  494. data/spec/shared_behaviours/file_serving_model.rb +0 -51
  495. data/spec/unit/face/man_spec.rb +0 -25
  496. data/spec/unit/man_spec.rb +0 -31
@@ -107,8 +107,7 @@ class Puppet::Module
107
107
  define_method(type + '?') do
108
108
  type_subpath = subpath(location)
109
109
  unless Puppet::FileSystem.exist?(type_subpath)
110
- Puppet.debug("No #{type} found in subpath '#{type_subpath}' " +
111
- "(file / directory does not exist)")
110
+ Puppet.debug { "No #{type} found in subpath '#{type_subpath}' (file / directory does not exist)" }
112
111
  return false
113
112
  end
114
113
 
@@ -49,7 +49,7 @@ module Puppet::Network::FormatSupport
49
49
 
50
50
  result = put_preferred_format_first(result).map(&:name)
51
51
 
52
- Puppet.debug "#{friendly_name} supports formats: #{result.join(' ')}"
52
+ Puppet.debug { "#{friendly_name} supports formats: #{result.join(' ')}" }
53
53
 
54
54
  result
55
55
  end
@@ -81,7 +81,7 @@ module Puppet::Network::FormatSupport
81
81
  }
82
82
 
83
83
  if preferred.empty?
84
- Puppet.debug "Value of 'preferred_serialization_format' (#{preferred_format}) is invalid for #{friendly_name}, using default (#{list.first.name})"
84
+ Puppet.debug { "Value of 'preferred_serialization_format' (#{preferred_format}) is invalid for #{friendly_name}, using default (#{list.first.name})" }
85
85
  else
86
86
  list = preferred + list.reject { |format|
87
87
  format.mime.end_with?(preferred_format)
@@ -218,7 +218,7 @@ class Puppet::Network::HTTP::API::IndirectedRoutes
218
218
  return formatter if formatter
219
219
 
220
220
  raise Puppet::Network::HTTP::Error::HTTPNotAcceptableError.new(
221
- _("No supported formats are acceptable (Accept: %{accepted_formats})") % { accepted_formats: formats },
221
+ _("No supported formats are acceptable (Accept: %{accepted_formats})") % { accepted_formats: formats.map(&:mime).join(', ') },
222
222
  Puppet::Network::HTTP::Issues::UNSUPPORTED_FORMAT)
223
223
  end
224
224
 
@@ -1,8 +1,11 @@
1
1
  require 'puppet/util/json'
2
2
  require 'puppet/parser/environment_compiler'
3
3
 
4
+ # @deprecated application orchestration will be removed in puppet 7
4
5
  class Puppet::Network::HTTP::API::Master::V3::Environment
5
6
  def call(request, response)
7
+ Puppet.deprecation_warning("Application orchestration is deprecated. See https://puppet.com/docs/puppet/5.5/deprecated_language.html")
8
+
6
9
  env_name = request.routing_path.split('/').last
7
10
  env = Puppet.lookup(:environments).get(env_name)
8
11
  code_id = request.params[:code_id]
@@ -31,5 +31,4 @@ class Puppet::Network::HTTP::API::Master::V3::Environments
31
31
  ttl
32
32
  end
33
33
  end
34
-
35
34
  end
@@ -26,6 +26,11 @@ class Puppet::Network::HTTP::BasePool
26
26
  socket = buffered_io.io
27
27
  return unless socket
28
28
 
29
- Puppet.debug("Using #{socket.ssl_version} with cipher #{socket.cipher.first}")
29
+ cipher = if Puppet::Util::Platform.jruby?
30
+ socket.cipher
31
+ else
32
+ socket.cipher.first
33
+ end
34
+ Puppet.debug("Using #{socket.ssl_version} with cipher #{cipher}")
30
35
  end
31
36
  end
@@ -20,9 +20,11 @@ module Puppet::Network::HTTP::Compression
20
20
  def uncompress_body(response)
21
21
  case response['content-encoding']
22
22
  when 'gzip'
23
+ Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::Active#uncompress_body is deprecated.'))
23
24
  # ZLib::GzipReader has an associated encoding, by default Encoding.default_external
24
25
  return Zlib::GzipReader.new(StringIO.new(response.body), :encoding => Encoding::BINARY).read
25
26
  when 'deflate'
27
+ Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::Active#uncompress_body is deprecated.'))
26
28
  return Zlib::Inflate.new.inflate(response.body)
27
29
  when nil, 'identity'
28
30
  return response.body
@@ -32,6 +34,7 @@ module Puppet::Network::HTTP::Compression
32
34
  end
33
35
 
34
36
  def uncompress(response)
37
+ Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::Active#uncompress is deprecated.'))
35
38
  raise Net::HTTPError.new("No block passed", response) unless block_given?
36
39
 
37
40
  case response['content-encoding']
@@ -71,6 +74,7 @@ module Puppet::Network::HTTP::Compression
71
74
  end
72
75
 
73
76
  def uncompress(chunk)
77
+ Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::ZlibAdapter#uncompress is deprecated.'))
74
78
  out = @uncompressor.inflate(chunk)
75
79
  @first = false
76
80
  return out
@@ -97,6 +101,7 @@ module Puppet::Network::HTTP::Compression
97
101
 
98
102
  module None
99
103
  def uncompress_body(response)
104
+ Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::None#uncompress_body is deprecated.'))
100
105
  response.body
101
106
  end
102
107
 
@@ -105,12 +110,14 @@ module Puppet::Network::HTTP::Compression
105
110
  end
106
111
 
107
112
  def uncompress(response)
113
+ Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::None#uncompress is deprecated.'))
108
114
  yield IdentityAdapter.new
109
115
  end
110
116
  end
111
117
 
112
118
  class IdentityAdapter
113
119
  def uncompress(chunk)
120
+ Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::IdentityAdapter#uncompress is deprecated.'))
114
121
  chunk
115
122
  end
116
123
 
@@ -343,6 +343,8 @@ module Puppet::Network::HTTP
343
343
  end
344
344
 
345
345
  def with_connection(site, &block)
346
+ Puppet.deprecation_warning(_('Puppet::Network::HTTP::Connection is deprecated. Please use Puppet::Network::HTTP::ConnectionAdapter instead.'))
347
+
346
348
  response = nil
347
349
  @pool.with_connection(site, @verifier) do |conn|
348
350
  response = yield conn
@@ -0,0 +1,184 @@
1
+ class Puppet::Network::HTTP::ConnectionAdapter < Puppet::Network::HTTP::Connection
2
+ def initialize(host, port, options = {})
3
+ super(host, port, options)
4
+
5
+ @client = Puppet.runtime[:http]
6
+ end
7
+
8
+ def get(path, headers = {}, options = {})
9
+ headers ||= {}
10
+ options[:ssl_context] ||= resolve_ssl_context
11
+ options[:redirect_limit] ||= @redirect_limit
12
+
13
+ with_error_handling do
14
+ resp = @client.get(to_url(path), headers: headers, options: options)
15
+ resp.nethttp
16
+ end
17
+ end
18
+
19
+ def post(path, data, headers = nil, options = {})
20
+ headers ||= {}
21
+ headers['Content-Type'] ||= "application/x-www-form-urlencoded"
22
+ data ||= ''
23
+ options[:ssl_context] ||= resolve_ssl_context
24
+ options[:redirect_limit] ||= @redirect_limit
25
+
26
+ with_error_handling do
27
+ resp = @client.post(to_url(path), data, headers: headers, options: options)
28
+ resp.nethttp
29
+ end
30
+ end
31
+
32
+ def head(path, headers = {}, options = {})
33
+ headers ||= {}
34
+ options[:ssl_context] ||= resolve_ssl_context
35
+ options[:redirect_limit] ||= @redirect_limit
36
+
37
+ with_error_handling do
38
+ resp = @client.head(to_url(path), headers: headers, options: options)
39
+ resp.nethttp
40
+ end
41
+ end
42
+
43
+ def delete(path, headers = {'Depth' => 'Infinity'}, options = {})
44
+ headers ||= {}
45
+ options[:ssl_context] ||= resolve_ssl_context
46
+ options[:redirect_limit] ||= @redirect_limit
47
+
48
+ with_error_handling do
49
+ resp = @client.delete(to_url(path), headers: headers, options: options)
50
+ resp.nethttp
51
+ end
52
+ end
53
+
54
+ def put(path, data, headers = nil, options = {})
55
+ headers ||= {}
56
+ headers['Content-Type'] ||= "application/x-www-form-urlencoded"
57
+ data ||= ''
58
+ options[:ssl_context] ||= resolve_ssl_context
59
+ options[:redirect_limit] ||= @redirect_limit
60
+
61
+ with_error_handling do
62
+ resp = @client.put(to_url(path), data, headers: headers, options: options)
63
+ resp.nethttp
64
+ end
65
+ end
66
+
67
+ def request_get(*args, &block)
68
+ path, headers = *args
69
+ headers ||= {}
70
+ options = {
71
+ ssl_context: resolve_ssl_context,
72
+ redirect_limit: @redirect_limit
73
+ }
74
+
75
+ resp = @client.get(to_url(path), headers: headers, options: options) do |response|
76
+ yield response.nethttp if block_given?
77
+ end
78
+ resp.nethttp
79
+ end
80
+
81
+ def request_head(*args, &block)
82
+ path, headers = *args
83
+ headers ||= {}
84
+ options = {
85
+ ssl_context: resolve_ssl_context,
86
+ redirect_limit: @redirect_limit
87
+ }
88
+
89
+ response = @client.head(to_url(path), headers: headers, options: options)
90
+ yield response.nethttp if block_given?
91
+ response.nethttp
92
+ end
93
+
94
+ def request_post(*args, &block)
95
+ path, data, headers = *args
96
+ headers ||= {}
97
+ headers['Content-Type'] ||= "application/x-www-form-urlencoded"
98
+ options = {
99
+ ssl_context: resolve_ssl_context,
100
+ redirect_limit: @redirect_limit
101
+ }
102
+
103
+ resp = @client.post(to_url(path), data, headers: headers, options: options) do |response|
104
+ yield response.nethttp if block_given?
105
+ end
106
+ resp.nethttp
107
+ end
108
+
109
+ private
110
+
111
+ # The old Connection class ignores the ssl_context on the Puppet stack,
112
+ # and always loads certs/keys based on what is currently in the filesystem.
113
+ # If the files are missing, it would attempt to bootstrap the certs/keys
114
+ # while in the process of making a network request, due to the call to
115
+ # Puppet.lookup(:ssl_host) in Puppet::SSL::Validator::DefaultValidator#setup_connection.
116
+ # This class doesn't preserve the boostrap behavior because that is handled
117
+ # outside of this class, and can only be triggered by running `puppet ssl` or
118
+ # `puppet agent`.
119
+ def resolve_ssl_context
120
+ # don't need an ssl context for http connections
121
+ return nil unless @site.use_ssl?
122
+
123
+ # if our verifier has an ssl_context, use that
124
+ ctx = @verifier.ssl_context
125
+ return ctx if ctx
126
+
127
+ # load available certs
128
+ cert = Puppet::X509::CertProvider.new
129
+ ssl = Puppet::SSL::SSLProvider.new
130
+ begin
131
+ password = cert.load_private_key_password
132
+ ssl.load_context(certname: Puppet[:certname], password: password)
133
+ rescue Puppet::SSL::SSLError => e
134
+ Puppet.log_exception(e)
135
+
136
+ # if we don't have cacerts, then create a root context that doesn't
137
+ # trust anything. The old code used to fallback to VERIFY_NONE,
138
+ # which we don't want to emulate.
139
+ ssl.create_root_context(cacerts: [])
140
+ end
141
+ end
142
+
143
+ def to_url(path)
144
+ if path =~ /^https?:\/\//
145
+ # The old Connection class accepts a URL as the request path, and sends
146
+ # it in "absolute-form" in the request line, e.g. GET https://puppet:8140/.
147
+ # See https://httpwg.org/specs/rfc7230.html#absolute-form. It just so happens
148
+ # to work because HTTP 1.1 servers are required to accept absolute-form even
149
+ # though clients are only supposed to send them to proxies, so the proxy knows
150
+ # what upstream server to CONNECT to. This method creates a URL using the
151
+ # scheme/host/port that the connection was created with, and appends the path
152
+ # and query portions of the absolute-form. The resulting request will use "origin-form"
153
+ # as it should have done all along.
154
+ abs_form = URI(path)
155
+ url = URI("#{@site.addr}/#{normalize_path(abs_form.path)}")
156
+ url.query = abs_form.query if abs_form.query
157
+ url
158
+ else
159
+ URI("#{@site.addr}/#{normalize_path(path)}")
160
+ end
161
+ end
162
+
163
+ def normalize_path(path)
164
+ if path[0] == '/'
165
+ path[1..-1]
166
+ else
167
+ path
168
+ end
169
+ end
170
+
171
+ def with_error_handling(&block)
172
+ yield
173
+ rescue Puppet::HTTP::TooManyRedirects => e
174
+ raise Puppet::Network::HTTP::RedirectionLimitExceededException.new(_("Too many HTTP redirections for %{host}:%{port}") % { host: @host, port: @port }, e)
175
+ rescue Puppet::HTTP::HTTPError => e
176
+ Puppet.log_exception(e, e.message)
177
+ case e.cause
178
+ when Net::OpenTimeout, Net::ReadTimeout, Net::HTTPError, EOFError
179
+ raise e.cause
180
+ else
181
+ raise e
182
+ end
183
+ end
184
+ end
@@ -3,6 +3,7 @@
3
3
  # @api private
4
4
  class Puppet::Network::HTTP::NoCachePool < Puppet::Network::HTTP::BasePool
5
5
  def initialize(factory = Puppet::Network::HTTP::Factory.new)
6
+ Puppet.deprecation_warning(_('Puppet::Network::HTTP::NoCachePool is deprecated.'))
6
7
  @factory = factory
7
8
  end
8
9
 
@@ -9,11 +9,9 @@
9
9
  # @api private
10
10
  #
11
11
  class Puppet::Network::HTTP::Pool < Puppet::Network::HTTP::BasePool
12
- FIFTEEN_SECONDS = 15
12
+ attr_reader :factory, :keepalive_timeout
13
13
 
14
- attr_reader :factory
15
-
16
- def initialize(keepalive_timeout = FIFTEEN_SECONDS)
14
+ def initialize(keepalive_timeout)
17
15
  @pool = {}
18
16
  @factory = Puppet::Network::HTTP::Factory.new
19
17
  @keepalive_timeout = keepalive_timeout
@@ -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,4 +1,5 @@
1
1
  require 'puppet/network/http/connection'
2
+ require 'puppet/network/http/connection_adapter'
2
3
  require 'puppet/util/platform'
3
4
 
4
5
  module Puppet::Network; end
@@ -12,7 +13,7 @@ module Puppet::Network; end
12
13
  #
13
14
  module Puppet::Network::HttpPool
14
15
 
15
- @http_client_class = Puppet::Network::HTTP::Connection
16
+ @http_client_class = Puppet::Network::HTTP::ConnectionAdapter
16
17
 
17
18
  def self.http_client_class
18
19
  @http_client_class
@@ -162,6 +162,10 @@ class Puppet::Node::Environment
162
162
  # @api private
163
163
  attr_accessor :loaders
164
164
 
165
+ # Lock for compilation that needs exclusive access to the environment
166
+ # @api private
167
+ attr_reader :lock
168
+
165
169
  # Checks to make sure that this environment did not have a manifest set in
166
170
  # its original environment.conf if Puppet is configured with
167
171
  # +disable_per_environment_manifest+ set true. If it did, the environment's
@@ -262,7 +266,7 @@ class Puppet::Node::Environment
262
266
  # @param name [String] The module name
263
267
  # @return [Puppet::Module, nil] The module if found, else nil
264
268
  def module(name)
265
- modules.find {|mod| mod.name == name}
269
+ modules_by_name[name]
266
270
  end
267
271
 
268
272
  # Locate a module instance by the full forge name (EG authorname/module)
@@ -293,7 +297,13 @@ class Puppet::Node::Environment
293
297
  def modules
294
298
  if @modules.nil?
295
299
  module_references = []
296
- seen_modules = {}
300
+ project = Puppet.lookup(:bolt_project) { nil }
301
+ seen_modules = if project && project.load_as_module?
302
+ module_references << project.to_h
303
+ { project.name => true }
304
+ else
305
+ {}
306
+ end
297
307
  modulepath.each do |path|
298
308
  Dir.entries(path).each do |name|
299
309
  next unless Puppet::Module.is_module_directory?(name, path)
@@ -317,6 +327,12 @@ class Puppet::Node::Environment
317
327
  @modules
318
328
  end
319
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
+
320
336
  # Generate a warning if the given directory in a module path entry is named `lib`.
321
337
  #
322
338
  # @api private
@@ -325,9 +341,10 @@ class Puppet::Node::Environment
325
341
  # @param name [String] The directory name
326
342
  def warn_about_mistaken_path(path, name)
327
343
  if name == "lib"
328
- Puppet.debug("Warning: Found directory named 'lib' in module path ('#{path}/lib'); unless " +
329
- "you are expecting to load a module named 'lib', your module path may be set " +
330
- "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
+ }
331
348
  end
332
349
  end
333
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 = {}