puppet 6.19.0-x64-mingw32 → 7.3.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 (513) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -16
  3. data/Gemfile +3 -4
  4. data/Gemfile.lock +33 -28
  5. data/README.md +1 -1
  6. data/conf/fileserver.conf +5 -10
  7. data/ext/build_defaults.yaml +1 -1
  8. data/ext/osx/file_mapping.yaml +0 -5
  9. data/ext/project_data.yaml +2 -14
  10. data/ext/redhat/puppet.spec.erb +0 -1
  11. data/ext/windows/service/daemon.rb +6 -5
  12. data/install.rb +21 -17
  13. data/lib/puppet.rb +11 -20
  14. data/lib/puppet/application.rb +182 -104
  15. data/lib/puppet/application/agent.rb +1 -0
  16. data/lib/puppet/application/apply.rb +3 -2
  17. data/lib/puppet/application/device.rb +101 -104
  18. data/lib/puppet/application/filebucket.rb +15 -11
  19. data/lib/puppet/application/script.rb +1 -0
  20. data/lib/puppet/application/ssl.rb +1 -1
  21. data/lib/puppet/application_support.rb +7 -0
  22. data/lib/puppet/configurer.rb +44 -36
  23. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  24. data/lib/puppet/defaults.rb +71 -170
  25. data/lib/puppet/environments.rb +44 -75
  26. data/lib/puppet/face/config.rb +10 -0
  27. data/lib/puppet/face/epp.rb +12 -2
  28. data/lib/puppet/face/facts.rb +80 -6
  29. data/lib/puppet/face/help.rb +1 -1
  30. data/lib/puppet/face/node/clean.rb +8 -0
  31. data/lib/puppet/face/plugin.rb +5 -8
  32. data/lib/puppet/ffi/posix.rb +10 -0
  33. data/lib/puppet/ffi/posix/constants.rb +14 -0
  34. data/lib/puppet/ffi/posix/functions.rb +24 -0
  35. data/lib/puppet/ffi/windows.rb +12 -0
  36. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  37. data/lib/puppet/ffi/windows/constants.rb +404 -0
  38. data/lib/puppet/ffi/windows/functions.rb +628 -0
  39. data/lib/puppet/ffi/windows/structs.rb +338 -0
  40. data/lib/puppet/file_serving/configuration.rb +0 -5
  41. data/lib/puppet/file_serving/configuration/parser.rb +6 -32
  42. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  43. data/lib/puppet/file_serving/mount.rb +1 -2
  44. data/lib/puppet/forge/repository.rb +0 -1
  45. data/lib/puppet/functions/epp.rb +1 -0
  46. data/lib/puppet/functions/inline_epp.rb +1 -0
  47. data/lib/puppet/generate/models/type/type.rb +4 -1
  48. data/lib/puppet/http.rb +22 -13
  49. data/lib/puppet/http/client.rb +164 -114
  50. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  51. data/lib/puppet/http/errors.rb +16 -0
  52. data/lib/puppet/http/external_client.rb +5 -7
  53. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  54. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  55. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  56. data/lib/puppet/http/proxy.rb +137 -0
  57. data/lib/puppet/http/redirector.rb +4 -12
  58. data/lib/puppet/http/resolver.rb +5 -15
  59. data/lib/puppet/http/resolver/server_list.rb +6 -10
  60. data/lib/puppet/http/resolver/settings.rb +4 -7
  61. data/lib/puppet/http/resolver/srv.rb +7 -11
  62. data/lib/puppet/http/response.rb +36 -54
  63. data/lib/puppet/http/response_converter.rb +24 -0
  64. data/lib/puppet/http/response_net_http.rb +42 -0
  65. data/lib/puppet/http/retry_after_handler.rb +4 -13
  66. data/lib/puppet/http/service.rb +12 -26
  67. data/lib/puppet/http/service/ca.rb +11 -22
  68. data/lib/puppet/http/service/compiler.rb +22 -69
  69. data/lib/puppet/http/service/file_server.rb +18 -27
  70. data/lib/puppet/http/service/puppetserver.rb +26 -12
  71. data/lib/puppet/http/service/report.rb +8 -10
  72. data/lib/puppet/http/session.rb +11 -20
  73. data/lib/puppet/{network/http → http}/site.rb +1 -2
  74. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  75. data/lib/puppet/indirector/fact_search.rb +60 -0
  76. data/lib/puppet/indirector/facts/facter.rb +24 -3
  77. data/lib/puppet/indirector/facts/json.rb +27 -0
  78. data/lib/puppet/indirector/facts/rest.rb +3 -22
  79. data/lib/puppet/indirector/facts/yaml.rb +3 -58
  80. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  81. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  82. data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
  83. data/lib/puppet/indirector/file_server.rb +1 -8
  84. data/lib/puppet/indirector/generic_http.rb +0 -11
  85. data/lib/puppet/indirector/json.rb +5 -1
  86. data/lib/puppet/indirector/node/json.rb +8 -0
  87. data/lib/puppet/indirector/node/rest.rb +2 -4
  88. data/lib/puppet/indirector/report/json.rb +34 -0
  89. data/lib/puppet/indirector/report/rest.rb +3 -8
  90. data/lib/puppet/indirector/request.rb +0 -101
  91. data/lib/puppet/indirector/rest.rb +12 -263
  92. data/lib/puppet/module_tool/applications.rb +0 -1
  93. data/lib/puppet/module_tool/applications/installer.rb +48 -2
  94. data/lib/puppet/module_tool/errors/shared.rb +17 -2
  95. data/lib/puppet/network/authconfig.rb +2 -96
  96. data/lib/puppet/network/authorization.rb +13 -35
  97. data/lib/puppet/network/formats.rb +69 -1
  98. data/lib/puppet/network/http.rb +3 -3
  99. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  100. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  101. data/lib/puppet/network/http/connection.rb +247 -316
  102. data/lib/puppet/network/http/handler.rb +0 -1
  103. data/lib/puppet/network/http_pool.rb +16 -34
  104. data/lib/puppet/node.rb +1 -30
  105. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  106. data/lib/puppet/pal/pal_impl.rb +73 -18
  107. data/lib/puppet/parser/ast/leaf.rb +3 -2
  108. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  109. data/lib/puppet/parser/compiler.rb +0 -198
  110. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  111. data/lib/puppet/parser/resource.rb +0 -69
  112. data/lib/puppet/parser/templatewrapper.rb +1 -1
  113. data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
  114. data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -8
  115. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  116. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  117. data/lib/puppet/pops/issues.rb +0 -5
  118. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  119. data/lib/puppet/pops/model/ast.pp +0 -42
  120. data/lib/puppet/pops/model/ast.rb +0 -290
  121. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  122. data/lib/puppet/pops/model/factory.rb +0 -45
  123. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  124. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  125. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  126. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  127. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  128. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  129. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  130. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  131. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  132. data/lib/puppet/pops/types/type_parser.rb +0 -4
  133. data/lib/puppet/pops/types/types.rb +0 -1
  134. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  135. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  136. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  137. data/lib/puppet/provider.rb +0 -13
  138. data/lib/puppet/provider/nameservice.rb +0 -18
  139. data/lib/puppet/provider/package/apt.rb +4 -0
  140. data/lib/puppet/provider/package/dpkg.rb +0 -10
  141. data/lib/puppet/provider/package/gem.rb +23 -3
  142. data/lib/puppet/provider/package/pip.rb +0 -1
  143. data/lib/puppet/provider/package/pkg.rb +0 -4
  144. data/lib/puppet/provider/package/portage.rb +1 -1
  145. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  146. data/lib/puppet/provider/service/smf.rb +191 -73
  147. data/lib/puppet/provider/user/aix.rb +2 -2
  148. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  149. data/lib/puppet/reference/configuration.rb +8 -5
  150. data/lib/puppet/reference/indirection.rb +1 -1
  151. data/lib/puppet/resource.rb +1 -89
  152. data/lib/puppet/resource/catalog.rb +1 -14
  153. data/lib/puppet/resource/type.rb +3 -119
  154. data/lib/puppet/resource/type_collection.rb +3 -48
  155. data/lib/puppet/runtime.rb +1 -2
  156. data/lib/puppet/settings.rb +88 -48
  157. data/lib/puppet/settings/alias_setting.rb +37 -0
  158. data/lib/puppet/settings/base_setting.rb +26 -2
  159. data/lib/puppet/settings/integer_setting.rb +17 -0
  160. data/lib/puppet/settings/port_setting.rb +15 -0
  161. data/lib/puppet/settings/priority_setting.rb +5 -4
  162. data/lib/puppet/ssl.rb +10 -6
  163. data/lib/puppet/ssl/base.rb +3 -5
  164. data/lib/puppet/ssl/certificate.rb +0 -6
  165. data/lib/puppet/ssl/certificate_request.rb +1 -12
  166. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  167. data/lib/puppet/ssl/oids.rb +3 -1
  168. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  169. data/lib/puppet/ssl/state_machine.rb +3 -1
  170. data/lib/puppet/ssl/verifier.rb +2 -0
  171. data/lib/puppet/test/test_helper.rb +1 -3
  172. data/lib/puppet/transaction.rb +1 -7
  173. data/lib/puppet/transaction/report.rb +2 -4
  174. data/lib/puppet/type.rb +0 -76
  175. data/lib/puppet/type/file.rb +5 -7
  176. data/lib/puppet/type/file/checksum.rb +1 -1
  177. data/lib/puppet/type/file/source.rb +1 -1
  178. data/lib/puppet/type/filebucket.rb +3 -3
  179. data/lib/puppet/type/package.rb +5 -13
  180. data/lib/puppet/type/user.rb +1 -1
  181. data/lib/puppet/util/autoload.rb +1 -8
  182. data/lib/puppet/util/execution.rb +0 -11
  183. data/lib/puppet/util/http_proxy.rb +2 -215
  184. data/lib/puppet/util/monkey_patches.rb +0 -46
  185. data/lib/puppet/util/posix.rb +54 -5
  186. data/lib/puppet/util/rdoc.rb +0 -7
  187. data/lib/puppet/util/retry_action.rb +1 -1
  188. data/lib/puppet/util/rubygems.rb +5 -1
  189. data/lib/puppet/util/run_mode.rb +9 -1
  190. data/lib/puppet/util/windows.rb +3 -8
  191. data/lib/puppet/util/windows/daemon.rb +360 -0
  192. data/lib/puppet/util/windows/error.rb +1 -0
  193. data/lib/puppet/util/windows/eventlog.rb +4 -9
  194. data/lib/puppet/util/windows/file.rb +8 -242
  195. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  196. data/lib/puppet/util/windows/process.rb +4 -226
  197. data/lib/puppet/util/windows/service.rb +9 -460
  198. data/lib/puppet/util/windows/string.rb +12 -13
  199. data/lib/puppet/util/yaml.rb +0 -22
  200. data/lib/puppet/vendor/require_vendored.rb +0 -1
  201. data/lib/puppet/version.rb +1 -1
  202. data/lib/puppet/x509.rb +5 -1
  203. data/lib/puppet/x509/cert_provider.rb +29 -1
  204. data/locales/puppet.pot +629 -1314
  205. data/man/man5/puppet.conf.5 +39 -99
  206. data/man/man8/puppet-agent.8 +2 -2
  207. data/man/man8/puppet-apply.8 +2 -2
  208. data/man/man8/puppet-catalog.8 +1 -1
  209. data/man/man8/puppet-config.8 +1 -1
  210. data/man/man8/puppet-describe.8 +1 -1
  211. data/man/man8/puppet-device.8 +2 -2
  212. data/man/man8/puppet-doc.8 +1 -1
  213. data/man/man8/puppet-epp.8 +1 -1
  214. data/man/man8/puppet-facts.8 +58 -9
  215. data/man/man8/puppet-filebucket.8 +6 -6
  216. data/man/man8/puppet-generate.8 +1 -1
  217. data/man/man8/puppet-help.8 +1 -1
  218. data/man/man8/puppet-lookup.8 +1 -1
  219. data/man/man8/puppet-module.8 +1 -58
  220. data/man/man8/puppet-node.8 +4 -1
  221. data/man/man8/puppet-parser.8 +1 -1
  222. data/man/man8/puppet-plugin.8 +1 -1
  223. data/man/man8/puppet-report.8 +4 -1
  224. data/man/man8/puppet-resource.8 +1 -1
  225. data/man/man8/puppet-script.8 +2 -2
  226. data/man/man8/puppet-ssl.8 +1 -1
  227. data/man/man8/puppet.8 +2 -2
  228. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
  229. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  230. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
  231. data/spec/integration/application/agent_spec.rb +151 -14
  232. data/spec/integration/application/apply_spec.rb +20 -1
  233. data/spec/integration/application/filebucket_spec.rb +16 -16
  234. data/spec/integration/application/help_spec.rb +2 -0
  235. data/spec/integration/application/plugin_spec.rb +23 -1
  236. data/spec/integration/defaults_spec.rb +7 -10
  237. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  238. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -2
  239. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -2
  240. data/spec/integration/network/http_pool_spec.rb +3 -21
  241. data/spec/integration/parser/catalog_spec.rb +0 -38
  242. data/spec/integration/parser/node_spec.rb +0 -9
  243. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  244. data/spec/integration/resource/type_collection_spec.rb +2 -6
  245. data/spec/integration/transaction_spec.rb +4 -9
  246. data/spec/integration/type/file_spec.rb +5 -4
  247. data/spec/integration/util/windows/adsi_spec.rb +3 -1
  248. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  249. data/spec/integration/util/windows/registry_spec.rb +0 -10
  250. data/spec/integration/util/windows/security_spec.rb +1 -1
  251. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  252. data/spec/lib/puppet_spec/settings.rb +7 -1
  253. data/spec/spec_helper.rb +3 -4
  254. data/spec/unit/agent_spec.rb +8 -8
  255. data/spec/unit/application/agent_spec.rb +0 -1
  256. data/spec/unit/application/config_spec.rb +224 -4
  257. data/spec/unit/application/facts_spec.rb +35 -0
  258. data/spec/unit/application/filebucket_spec.rb +41 -41
  259. data/spec/unit/application/ssl_spec.rb +2 -2
  260. data/spec/unit/application_spec.rb +51 -9
  261. data/spec/unit/certificate_factory_spec.rb +1 -1
  262. data/spec/unit/configurer/downloader_spec.rb +6 -2
  263. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  264. data/spec/unit/configurer_spec.rb +12 -9
  265. data/spec/unit/confine/feature_spec.rb +1 -1
  266. data/spec/unit/confine_spec.rb +8 -2
  267. data/spec/unit/context/trusted_information_spec.rb +2 -6
  268. data/spec/unit/defaults_spec.rb +26 -32
  269. data/spec/unit/environments_spec.rb +96 -22
  270. data/spec/unit/face/config_spec.rb +27 -32
  271. data/spec/unit/face/facts_spec.rb +4 -0
  272. data/spec/unit/face/node_spec.rb +14 -13
  273. data/spec/unit/face/plugin_spec.rb +73 -33
  274. data/spec/unit/file_bucket/file_spec.rb +1 -1
  275. data/spec/unit/file_serving/configuration/parser_spec.rb +22 -19
  276. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  277. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  278. data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
  279. data/spec/unit/forge/module_release_spec.rb +2 -7
  280. data/spec/unit/functions/camelcase_spec.rb +1 -1
  281. data/spec/unit/functions/capitalize_spec.rb +1 -1
  282. data/spec/unit/functions/downcase_spec.rb +1 -1
  283. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  284. data/spec/unit/functions/upcase_spec.rb +1 -1
  285. data/spec/unit/http/client_spec.rb +7 -8
  286. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  287. data/spec/unit/http/external_client_spec.rb +4 -4
  288. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  289. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  290. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  291. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  292. data/spec/unit/http/resolver_spec.rb +13 -13
  293. data/spec/unit/http/service/compiler_spec.rb +49 -62
  294. data/spec/unit/http/service/file_server_spec.rb +3 -3
  295. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  296. data/spec/unit/http/service_spec.rb +1 -2
  297. data/spec/unit/http/session_spec.rb +16 -14
  298. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  299. data/spec/unit/indirector/face_spec.rb +0 -1
  300. data/spec/unit/indirector/facts/facter_spec.rb +104 -1
  301. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  302. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  303. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
  304. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  305. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  306. data/spec/unit/indirector/file_server_spec.rb +1 -15
  307. data/spec/unit/indirector/indirection_spec.rb +8 -12
  308. data/spec/unit/indirector/node/json_spec.rb +33 -0
  309. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  310. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  311. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  312. data/spec/unit/indirector/request_spec.rb +0 -264
  313. data/spec/unit/indirector/rest_spec.rb +98 -752
  314. data/spec/unit/indirector_spec.rb +2 -2
  315. data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
  316. data/spec/unit/network/authconfig_spec.rb +2 -132
  317. data/spec/unit/network/authorization_spec.rb +2 -55
  318. data/spec/unit/network/formats_spec.rb +45 -4
  319. data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -101
  320. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  321. data/spec/unit/network/http/api_spec.rb +10 -0
  322. data/spec/unit/network/http/connection_spec.rb +19 -41
  323. data/spec/unit/network/http/handler_spec.rb +0 -6
  324. data/spec/unit/network/http_pool_spec.rb +0 -4
  325. data/spec/unit/node/environment_spec.rb +33 -21
  326. data/spec/unit/node_spec.rb +2 -54
  327. data/spec/unit/parser/compiler_spec.rb +3 -19
  328. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  329. data/spec/unit/parser/resource_spec.rb +14 -8
  330. data/spec/unit/parser/templatewrapper_spec.rb +4 -3
  331. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
  332. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  333. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  334. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  335. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  336. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  337. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  338. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  339. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  340. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  341. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  342. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  343. data/spec/unit/pops/visitor_spec.rb +1 -1
  344. data/spec/unit/property_spec.rb +1 -0
  345. data/spec/unit/provider/nameservice_spec.rb +66 -122
  346. data/spec/unit/provider/package/apt_spec.rb +4 -8
  347. data/spec/unit/provider/package/base_spec.rb +6 -5
  348. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  349. data/spec/unit/provider/package/gem_spec.rb +32 -0
  350. data/spec/unit/provider/package/pacman_spec.rb +18 -12
  351. data/spec/unit/provider/package/pip_spec.rb +6 -11
  352. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
  353. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  354. data/spec/unit/provider/service/smf_spec.rb +401 -165
  355. data/spec/unit/provider/service/windows_spec.rb +0 -1
  356. data/spec/unit/provider/user/aix_spec.rb +5 -0
  357. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  358. data/spec/unit/provider/user/pw_spec.rb +2 -0
  359. data/spec/unit/provider/user/useradd_spec.rb +1 -0
  360. data/spec/unit/provider_spec.rb +6 -20
  361. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  362. data/spec/unit/resource/type_collection_spec.rb +2 -22
  363. data/spec/unit/resource/type_spec.rb +1 -1
  364. data/spec/unit/resource_spec.rb +11 -66
  365. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  366. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  367. data/spec/unit/settings/port_setting_spec.rb +31 -0
  368. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  369. data/spec/unit/settings_spec.rb +560 -228
  370. data/spec/unit/ssl/base_spec.rb +36 -4
  371. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  372. data/spec/unit/ssl/certificate_spec.rb +2 -11
  373. data/spec/unit/ssl/ssl_provider_spec.rb +14 -8
  374. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  375. data/spec/unit/ssl/verifier_spec.rb +0 -21
  376. data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
  377. data/spec/unit/transaction/event_manager_spec.rb +14 -11
  378. data/spec/unit/transaction/report_spec.rb +0 -2
  379. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  380. data/spec/unit/transaction_spec.rb +57 -82
  381. data/spec/unit/type/file/checksum_spec.rb +6 -6
  382. data/spec/unit/type/file/content_spec.rb +1 -2
  383. data/spec/unit/type/file/ensure_spec.rb +1 -1
  384. data/spec/unit/type/file/mode_spec.rb +1 -1
  385. data/spec/unit/type/file/selinux_spec.rb +0 -2
  386. data/spec/unit/type/file/source_spec.rb +0 -1
  387. data/spec/unit/type/file_spec.rb +12 -12
  388. data/spec/unit/type/group_spec.rb +13 -6
  389. data/spec/unit/type/package_spec.rb +1 -1
  390. data/spec/unit/type/resources_spec.rb +7 -7
  391. data/spec/unit/type/service_spec.rb +1 -1
  392. data/spec/unit/type/tidy_spec.rb +0 -1
  393. data/spec/unit/type_spec.rb +22 -2
  394. data/spec/unit/util/at_fork_spec.rb +2 -2
  395. data/spec/unit/util/autoload_spec.rb +5 -1
  396. data/spec/unit/util/backups_spec.rb +1 -4
  397. data/spec/unit/util/execution_spec.rb +15 -40
  398. data/spec/unit/util/inifile_spec.rb +6 -14
  399. data/spec/unit/util/log_spec.rb +8 -7
  400. data/spec/unit/util/logging_spec.rb +3 -3
  401. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  402. data/spec/unit/util/posix_spec.rb +363 -15
  403. data/spec/unit/util/rubygems_spec.rb +2 -2
  404. data/spec/unit/util/run_mode_spec.rb +21 -121
  405. data/spec/unit/util/selinux_spec.rb +76 -52
  406. data/spec/unit/util/storage_spec.rb +3 -1
  407. data/spec/unit/util/suidmanager_spec.rb +44 -41
  408. data/spec/unit/util/windows/string_spec.rb +1 -3
  409. data/spec/unit/util/yaml_spec.rb +0 -54
  410. data/spec/unit/util_spec.rb +13 -24
  411. metadata +66 -226
  412. data/conf/auth.conf +0 -150
  413. data/lib/puppet/application/cert.rb +0 -76
  414. data/lib/puppet/application/key.rb +0 -4
  415. data/lib/puppet/application/man.rb +0 -4
  416. data/lib/puppet/application/status.rb +0 -4
  417. data/lib/puppet/face/key.rb +0 -16
  418. data/lib/puppet/face/man.rb +0 -145
  419. data/lib/puppet/face/module/build.rb +0 -14
  420. data/lib/puppet/face/module/generate.rb +0 -14
  421. data/lib/puppet/face/module/search.rb +0 -103
  422. data/lib/puppet/face/status.rb +0 -51
  423. data/lib/puppet/indirector/certificate/file.rb +0 -9
  424. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  425. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  426. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  427. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  428. data/lib/puppet/indirector/file_content/http.rb +0 -22
  429. data/lib/puppet/indirector/key/file.rb +0 -46
  430. data/lib/puppet/indirector/key/memory.rb +0 -7
  431. data/lib/puppet/indirector/ssl_file.rb +0 -162
  432. data/lib/puppet/indirector/status.rb +0 -3
  433. data/lib/puppet/indirector/status/local.rb +0 -12
  434. data/lib/puppet/indirector/status/rest.rb +0 -27
  435. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  436. data/lib/puppet/network/auth_config_parser.rb +0 -90
  437. data/lib/puppet/network/authstore.rb +0 -283
  438. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  439. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  440. data/lib/puppet/network/http/base_pool.rb +0 -36
  441. data/lib/puppet/network/http/compression.rb +0 -127
  442. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  443. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  444. data/lib/puppet/network/rest_controller.rb +0 -2
  445. data/lib/puppet/network/rights.rb +0 -210
  446. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  447. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  448. data/lib/puppet/parser/environment_compiler.rb +0 -202
  449. data/lib/puppet/pops/types/enumeration.rb +0 -16
  450. data/lib/puppet/resource/capability_finder.rb +0 -154
  451. data/lib/puppet/rest/errors.rb +0 -15
  452. data/lib/puppet/rest/response.rb +0 -35
  453. data/lib/puppet/rest/route.rb +0 -85
  454. data/lib/puppet/rest/routes.rb +0 -135
  455. data/lib/puppet/ssl/host.rb +0 -505
  456. data/lib/puppet/ssl/key.rb +0 -61
  457. data/lib/puppet/ssl/validator.rb +0 -61
  458. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  459. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  460. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  461. data/lib/puppet/status.rb +0 -40
  462. data/lib/puppet/util/connection.rb +0 -88
  463. data/lib/puppet/util/ssl.rb +0 -83
  464. data/lib/puppet/util/windows/api_types.rb +0 -309
  465. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  466. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  467. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  468. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  469. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  470. data/lib/puppet/vendor/pathspec/README.md +0 -53
  471. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  472. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  473. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  474. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  475. data/man/man8/puppet-key.8 +0 -126
  476. data/man/man8/puppet-man.8 +0 -76
  477. data/man/man8/puppet-status.8 +0 -108
  478. data/spec/integration/application/config_spec.rb +0 -74
  479. data/spec/integration/network/authconfig_spec.rb +0 -256
  480. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  481. data/spec/unit/application/man_spec.rb +0 -52
  482. data/spec/unit/capability_spec.rb +0 -414
  483. data/spec/unit/face/catalog_spec.rb +0 -6
  484. data/spec/unit/face/key_spec.rb +0 -9
  485. data/spec/unit/face/module/search_spec.rb +0 -231
  486. data/spec/unit/face/module_spec.rb +0 -3
  487. data/spec/unit/face/status_spec.rb +0 -9
  488. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  489. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  490. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  491. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  492. data/spec/unit/indirector/key/file_spec.rb +0 -79
  493. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  494. data/spec/unit/indirector/status/local_spec.rb +0 -10
  495. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  496. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  497. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  498. data/spec/unit/network/authstore_spec.rb +0 -422
  499. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  500. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  501. data/spec/unit/network/http/compression_spec.rb +0 -240
  502. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  503. data/spec/unit/network/http_spec.rb +0 -9
  504. data/spec/unit/network/rights_spec.rb +0 -439
  505. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  506. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  507. data/spec/unit/resource/capability_finder_spec.rb +0 -143
  508. data/spec/unit/rest/route_spec.rb +0 -132
  509. data/spec/unit/ssl/host_spec.rb +0 -650
  510. data/spec/unit/ssl/key_spec.rb +0 -173
  511. data/spec/unit/ssl/validator_spec.rb +0 -278
  512. data/spec/unit/status_spec.rb +0 -45
  513. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -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'
@@ -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)
@@ -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.
@@ -58,8 +59,8 @@ module Pal
58
59
  configured_by_env: false,
59
60
  manifest_file: nil,
60
61
  code_string: nil,
61
- facts: nil,
62
- variables: nil,
62
+ facts: {},
63
+ variables: {},
63
64
  set_local_facts: true,
64
65
  &block
65
66
  )
@@ -93,7 +94,14 @@ module Pal
93
94
 
94
95
  # If manifest_file is nil, the #main method will use the env configured manifest
95
96
  # to do things in the block while a Script Compiler is in effect
96
- main(manifest_file, facts, variables, :script, set_local_facts, &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
+ )
97
105
  ensure
98
106
  Puppet[:tasks] = previous_tasks_value
99
107
  Puppet[:code] = previous_code_value
@@ -157,8 +165,9 @@ module Pal
157
165
  configured_by_env: false,
158
166
  manifest_file: nil,
159
167
  code_string: nil,
160
- facts: nil,
161
- variables: nil,
168
+ facts: {},
169
+ variables: {},
170
+ target_variables: {},
162
171
  &block
163
172
  )
164
173
  # TRANSLATORS: do not translate variable name strings in these assertions
@@ -193,7 +202,15 @@ module Pal
193
202
 
194
203
  # If manifest_file is nil, the #main method will use the env configured manifest
195
204
  # to do things in the block while a Script Compiler is in effect
196
- main(manifest_file, facts, variables, :catalog, false, &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
+ )
197
214
  ensure
198
215
  # Clean up after ourselves
199
216
  Puppet[:tasks] = previous_tasks_value
@@ -258,6 +275,7 @@ module Pal
258
275
  # @return [Object] returns what the given block returns
259
276
  # @yieldparam [Puppet::Pal] context, a context that responds to Puppet::Pal methods
260
277
  #
278
+ # @api public
261
279
  def self.in_environment(env_name,
262
280
  modulepath: nil,
263
281
  pre_modulepath: [],
@@ -382,11 +400,12 @@ module Pal
382
400
  # the provided block
383
401
  #
384
402
  def self.main(
385
- manifest,
386
- facts,
387
- variables,
388
- internal_compiler_class,
389
- set_local_facts
403
+ manifest: nil,
404
+ facts: {},
405
+ variables: {},
406
+ target_variables: {},
407
+ internal_compiler_class: nil,
408
+ set_local_facts: true
390
409
  )
391
410
  # Configure the load path
392
411
  env = Puppet.lookup(:pal_env)
@@ -403,14 +422,11 @@ module Pal
403
422
  pal_variables = Puppet.lookup(:pal_variables)
404
423
 
405
424
  overrides = {}
425
+
406
426
  unless facts.nil? || facts.empty?
407
427
  pal_facts = pal_facts.merge(facts)
408
428
  overrides[:pal_facts] = pal_facts
409
429
  end
410
- unless variables.nil? || variables.empty?
411
- pal_variables = pal_variables.merge(variables)
412
- overrides[:pal_variables] = pal_variables
413
- end
414
430
 
415
431
  prepare_node_facts(node, pal_facts)
416
432
 
@@ -463,10 +479,17 @@ module Pal
463
479
  # TRANSLATORS: Do not translate, symbolic name
464
480
  Puppet.override(overrides, "PAL::with_#{internal_compiler_class}_compiler") do
465
481
  compiler.compile do | compiler_yield |
466
- # 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
467
483
  # need to be deserialized and added from within the this scope, so that loaders are
468
484
  # available during deserizlization.
469
- 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)
470
493
  # wrap the internal compiler to prevent it from leaking in the PAL API
471
494
  if block_given?
472
495
  yield(pal_compiler)
@@ -486,6 +509,38 @@ module Pal
486
509
  end
487
510
  private_class_method :main
488
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
+
489
544
  def self.create_internal_compiler(compiler_class_reference, node)
490
545
  case compiler_class_reference
491
546
  when :script
@@ -50,8 +50,9 @@ class Puppet::Parser::AST::HostName < Puppet::Parser::AST::Leaf
50
50
  end
51
51
 
52
52
  class Puppet::Parser::AST::Regex < Puppet::Parser::AST::Leaf
53
- def initialize(hash)
54
- super(**hash)
53
+ def initialize(value: nil, file: nil, line: nil, pos: nil)
54
+ super(value: value, file: file, line: line, pos: pos)
55
+
55
56
  # transform value from hash options unless it is already a regular expression
56
57
  @value = Regexp.new(@value) unless @value.is_a?(Regexp)
57
58
  end
@@ -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
@@ -72,22 +72,6 @@ class Puppet::Parser::Compiler
72
72
  end
73
73
 
74
74
  def add_resource(scope, resource)
75
- type = resource.resource_type
76
- if type.is_a?(Puppet::Resource::Type) && type.application?
77
- @applications << resource
78
- assert_app_in_site(scope, resource)
79
- return
80
- end
81
-
82
- if @current_app
83
- # We are in the process of pulling application components out that
84
- # apply to this node
85
- Puppet.notice "Check #{resource}"
86
- return unless @current_components.any? do |comp|
87
- comp.type == resource.type && comp.title == resource.title
88
- end
89
- end
90
-
91
75
  @resources << resource
92
76
 
93
77
  # Note that this will fail if the resource is not unique.
@@ -110,22 +94,6 @@ class Puppet::Parser::Compiler
110
94
  end
111
95
  end
112
96
 
113
- def assert_app_in_site(scope, resource)
114
- if resource.type == 'App'
115
- if scope.resource
116
- # directly contained in a Site
117
- return if scope.resource.type == 'Site'
118
- # contained in something that may be contained in Site
119
- upstream = @catalog.upstream_from_vertex(scope.resource)
120
- if upstream
121
- return if upstream.keys.map(&:type).include?('Site')
122
- end
123
- end
124
- #TRANSLATORS "Site" is a puppet keyword and should not be translated
125
- raise ArgumentError, _("Application instances like '%{resource}' can only be contained within a Site") % { resource: resource }
126
- end
127
- end
128
-
129
97
  # Store the fact that we've evaluated a class
130
98
  def add_class(name)
131
99
  @catalog.add_class(name) unless name == ""
@@ -160,22 +128,13 @@ class Puppet::Parser::Compiler
160
128
 
161
129
  Puppet::Util::Profiler.profile(_("Compile: Created settings scope"), [:compiler, :create_settings_scope]) { create_settings_scope }
162
130
 
163
- Puppet::Util::Profiler.profile(_("Compile: Evaluated capability mappings"), [:compiler, :evaluate_capability_mappings]) { evaluate_capability_mappings }
164
-
165
131
  #TRANSLATORS "main" is a function name and should not be translated
166
132
  Puppet::Util::Profiler.profile(_("Compile: Evaluated main"), [:compiler, :evaluate_main]) { evaluate_main }
167
133
 
168
- Puppet::Util::Profiler.profile(_("Compile: Evaluated site"), [:compiler, :evaluate_site]) { evaluate_site }
169
-
170
134
  Puppet::Util::Profiler.profile(_("Compile: Evaluated AST node"), [:compiler, :evaluate_ast_node]) { evaluate_ast_node }
171
135
 
172
136
  Puppet::Util::Profiler.profile(_("Compile: Evaluated node classes"), [:compiler, :evaluate_node_classes]) { evaluate_node_classes }
173
137
 
174
- Puppet::Util::Profiler.profile(_("Compile: Evaluated application instances"), [:compiler, :evaluate_applications]) { evaluate_applications }
175
-
176
- # New capability mappings may have been defined when the site was evaluated
177
- Puppet::Util::Profiler.profile(_("Compile: Evaluated site capability mappings"), [:compiler, :evaluate_capability_mappings]) { evaluate_capability_mappings }
178
-
179
138
  Puppet::Util::Profiler.profile(_("Compile: Evaluated generators"), [:compiler, :evaluate_generators]) { evaluate_generators }
180
139
 
181
140
  Puppet::Util::Profiler.profile(_("Compile: Validate Catalog pre-finish"), [:compiler, :validate_pre_finish]) do
@@ -184,8 +143,6 @@ class Puppet::Parser::Compiler
184
143
 
185
144
  Puppet::Util::Profiler.profile(_("Compile: Finished catalog"), [:compiler, :finish_catalog]) { finish }
186
145
 
187
- Puppet::Util::Profiler.profile(_("Compile: Prune"), [:compiler, :prune_catalog]) { prune_catalog }
188
-
189
146
  fail_on_unevaluated
190
147
 
191
148
  Puppet::Util::Profiler.profile(_("Compile: Validate Catalog final"), [:compiler, :validate_final]) do
@@ -243,112 +200,6 @@ class Puppet::Parser::Compiler
243
200
  evaluate_classes(classes_without_params, @node_scope || topscope)
244
201
  end
245
202
 
246
- # Evaluates the site - the top container for an environment catalog
247
- # The site contain behaves analogous to a node - for the environment catalog, node expressions are ignored
248
- # as the result is cross node. The site expression serves as a container for everything that is across
249
- # all nodes.
250
- #
251
- # @api private
252
- #
253
- def evaluate_site
254
- # Has a site been defined? If not, do nothing but issue a warning.
255
- #
256
- site = environment.known_resource_types.find_site()
257
- unless site
258
- on_empty_site()
259
- return
260
- end
261
-
262
- # Create a resource to model this site and add it to catalog
263
- resource = site.ensure_in_catalog(topscope)
264
-
265
- # The site sets node scope to be able to shadow what is in top scope
266
- @node_scope = topscope.class_scope(site)
267
-
268
- # Evaluates the logic contain in the site expression
269
- resource.evaluate
270
- end
271
-
272
- # @api private
273
- def on_empty_site
274
- # do nothing
275
- end
276
-
277
- # Prunes the catalog by dropping all resources are contained under the Site (if a site expression is used).
278
- # As a consequence all edges to/from dropped resources are also dropped.
279
- # Once the pruning is performed, this compiler returns the pruned list when calling the #resources method.
280
- # The pruning does not alter the order of resources in the resources list.
281
- #
282
- # @api private
283
- def prune_catalog
284
- prune_node_catalog
285
- end
286
-
287
- def prune_node_catalog
288
- # Everything under Site[site] should be pruned as that is for the environment catalog, not a node
289
- #
290
- the_site_resource = @catalog.resource('Site', 'site')
291
-
292
- if the_site_resource
293
- # Get downstream vertexes returns a hash where the keys are the resources and values nesting level
294
- to_be_removed = @catalog.downstream_from_vertex(the_site_resource).keys
295
-
296
- # Drop the Site[site] resource if it has no content
297
- if to_be_removed.empty?
298
- to_be_removed << the_site_resource
299
- end
300
- else
301
- to_be_removed = []
302
- end
303
-
304
- # keep_from_site is populated with any App resources.
305
- application_resources = @resources.select {|r| r.type == 'App' }
306
- # keep all applications plus what is directly referenced from applications
307
- keep_from_site = application_resources
308
- keep_from_site += application_resources.map {|app| @catalog.direct_dependents_of(app) }.flatten
309
-
310
- to_be_removed -= keep_from_site
311
- @catalog.remove_resource(*to_be_removed)
312
- # set the pruned result
313
- @resources = @catalog.resources
314
- end
315
-
316
- # @api private
317
- def evaluate_applications
318
- @applications.each do |app|
319
- components = []
320
- mapping = app.parameters[:nodes] ? app.parameters[:nodes].value : {}
321
- raise Puppet::Error, _("Invalid node mapping in %{app}: Mapping must be a hash") % { app: app.ref } unless mapping.is_a?(Hash)
322
- all_mapped = Set.new
323
- mapping.each do |k,v|
324
- raise Puppet::Error, _("Invalid node mapping in %{app}: Key %{k} is not a Node") % { app: app.ref, k: k } unless k.is_a?(Puppet::Resource) && k.type == 'Node'
325
- v = [v] unless v.is_a?(Array)
326
- v.each do |res|
327
- raise Puppet::Error, _("Invalid node mapping in %{app}: Value %{res} is not a resource") % { app: app.ref, res: res } unless res.is_a?(Puppet::Resource)
328
- raise Puppet::Error, _("Application %{app} maps component %{res} to multiple nodes") % { app: app.ref, res: res } if all_mapped.add?(res.ref).nil?
329
- components << res if k.title == node.name
330
- end
331
- end
332
- begin
333
- @current_app = app
334
- @current_components = components
335
- unless @current_components.empty?
336
- Puppet.notice "EVAL APP #{app} #{components.inspect}"
337
- # Add the app itself since components mapped to the current node
338
- # will have a containment edge for it
339
- # @todo lutter 2015-01-28: the node mapping winds up in the
340
- # catalog, but probably shouldn't
341
- @catalog.add_resource(@current_app)
342
- @current_app.evaluate
343
- end
344
- ensure
345
- @current_app = nil
346
- @current_components = nil
347
- end
348
- end
349
- end
350
-
351
-
352
203
  # If ast nodes are enabled, then see if we can find and evaluate one.
353
204
  #
354
205
  # @api private
@@ -391,12 +242,6 @@ class Puppet::Parser::Compiler
391
242
  classes = classes.keys
392
243
  end
393
244
 
394
- unless @current_components.nil?
395
- classes = classes.select do |title|
396
- @current_components.any? { |comp| comp.class? && comp.title == title }
397
- end
398
- end
399
-
400
245
  hostclasses = classes.collect do |name|
401
246
  environment.known_resource_types.find_hostclass(name) or raise Puppet::Error, _("Could not find class %{name} for %{node}") % { name: name, node: node.name }
402
247
  end
@@ -427,16 +272,6 @@ class Puppet::Parser::Compiler
427
272
 
428
273
  def initialize(node, code_id: nil)
429
274
  @node = sanitize_node(node)
430
- # Array of resources representing all application instances we've found
431
- @applications = []
432
- # We use @current_app and @current_components to signal to the
433
- # evaluator that we are in the middle of evaluating an
434
- # application. They are set in evaluate_applications to the application
435
- # instance, resp. to an array of the components of that application
436
- # that is mapped to the current node. They are only non-nil when we are
437
- # in the middle of executing evaluate_applications
438
- @current_app = nil
439
- @current_components = nil
440
275
  @code_id = code_id
441
276
  initvars
442
277
  add_catalog_validators
@@ -481,39 +316,6 @@ class Puppet::Parser::Compiler
481
316
  [already_included, newly_included]
482
317
  end
483
318
 
484
- def evaluate_capability_mappings
485
- krt = environment.known_resource_types
486
- krt.capability_mappings.each_value do |capability_mapping|
487
- args = capability_mapping.arguments
488
- component_ref = args['component']
489
- kind = args['kind']
490
-
491
- # That component_ref is either a QREF or a Class['literal'|QREF] is asserted during validation so no
492
- # need to check that here
493
- if component_ref.is_a?(Puppet::Pops::Model::QualifiedReference)
494
- component_name = component_ref.cased_value
495
- component_type = 'type'
496
- component = krt.find_definition(component_name)
497
- else
498
- component_name = component_ref.keys[0].value
499
- component_type = 'class'
500
- component = krt.find_hostclass(component_name)
501
- end
502
- if component.nil?
503
- raise Puppet::ParseError, _("Capability mapping error: %{kind} clause references nonexistent %{component_type} %{component_name}") %
504
- { kind: kind, component_type: component_type, component_name: component_name }
505
- end
506
-
507
- blueprint = args['blueprint']
508
- if kind == 'produces'
509
- component.add_produces(blueprint)
510
- else
511
- component.add_consumes(blueprint)
512
- end
513
- end
514
- krt.capability_mappings.clear # No longer needed
515
- end
516
-
517
319
  # Evaluate our collections and return true if anything returned an object.
518
320
  # The 'true' is used to continue a loop, so it's important.
519
321
  def evaluate_collections