puppet 4.2.3 → 4.3.0

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

Potentially problematic release.


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

Files changed (337) hide show
  1. data/Gemfile +3 -0
  2. data/README.md +1 -1
  3. data/ext/debian/puppet.init +0 -1
  4. data/ext/debian/puppet.logrotate +14 -5
  5. data/ext/osx/puppet.plist +0 -2
  6. data/ext/redhat/client.init +13 -5
  7. data/ext/redhat/logrotate +15 -3
  8. data/ext/redhat/puppet.spec.erb +5 -1
  9. data/ext/redhat/server.init +1 -1
  10. data/ext/systemd/puppet.service +1 -0
  11. data/lib/puppet.rb +12 -0
  12. data/lib/puppet/agent.rb +4 -4
  13. data/lib/puppet/agent/locker.rb +11 -2
  14. data/lib/puppet/application/agent.rb +5 -1
  15. data/lib/puppet/application/apply.rb +4 -0
  16. data/lib/puppet/application/filebucket.rb +78 -4
  17. data/lib/puppet/application/lookup.rb +356 -0
  18. data/lib/puppet/application/master.rb +3 -0
  19. data/lib/puppet/configurer.rb +9 -5
  20. data/lib/puppet/context.rb +16 -1
  21. data/lib/puppet/context/trusted_information.rb +21 -1
  22. data/lib/puppet/daemon.rb +17 -13
  23. data/lib/puppet/data_binding.rb +4 -2
  24. data/lib/puppet/data_providers.rb +12 -13
  25. data/lib/puppet/data_providers/data_adapter.rb +7 -68
  26. data/lib/puppet/data_providers/data_function_support.rb +5 -26
  27. data/lib/puppet/data_providers/function_env_data_provider.rb +0 -10
  28. data/lib/puppet/data_providers/function_module_data_provider.rb +0 -22
  29. data/lib/puppet/data_providers/hiera_config.rb +106 -0
  30. data/lib/puppet/data_providers/hiera_env_data_provider.rb +18 -0
  31. data/lib/puppet/data_providers/hiera_interpolate.rb +97 -0
  32. data/lib/puppet/data_providers/hiera_module_data_provider.rb +23 -0
  33. data/lib/puppet/data_providers/hiera_support.rb +37 -0
  34. data/lib/puppet/data_providers/json_data_provider_factory.rb +31 -0
  35. data/lib/puppet/data_providers/lookup_adapter.rb +200 -0
  36. data/lib/puppet/data_providers/yaml_data_provider_factory.rb +32 -0
  37. data/lib/puppet/defaults.rb +12 -2
  38. data/lib/puppet/error.rb +4 -0
  39. data/lib/puppet/face/module/changes.rb +2 -1
  40. data/lib/puppet/feature/cfacter.rb +1 -0
  41. data/lib/puppet/file_bucket/dipper.rb +58 -2
  42. data/lib/puppet/functions.rb +2 -4
  43. data/lib/puppet/functions/assert_type.rb +48 -12
  44. data/lib/puppet/functions/defined.rb +79 -48
  45. data/lib/puppet/functions/each.rb +85 -27
  46. data/lib/puppet/functions/filter.rb +58 -23
  47. data/lib/puppet/functions/hiera.rb +76 -3
  48. data/lib/puppet/functions/hiera_array.rb +65 -3
  49. data/lib/puppet/functions/hiera_hash.rb +74 -2
  50. data/lib/puppet/functions/hiera_include.rb +75 -2
  51. data/lib/puppet/functions/lookup.rb +19 -17
  52. data/lib/puppet/functions/map.rb +56 -21
  53. data/lib/puppet/functions/match.rb +29 -12
  54. data/lib/puppet/functions/reduce.rb +95 -58
  55. data/lib/puppet/functions/versioncmp.rb +36 -0
  56. data/lib/puppet/functions/with.rb +15 -7
  57. data/lib/puppet/indirector/catalog/compiler.rb +3 -3
  58. data/lib/puppet/indirector/catalog/static_compiler.rb +46 -30
  59. data/lib/puppet/indirector/data_binding/none.rb +4 -1
  60. data/lib/puppet/indirector/file_bucket_file/file.rb +58 -1
  61. data/lib/puppet/indirector/hiera.rb +4 -0
  62. data/lib/puppet/indirector/json.rb +1 -1
  63. data/lib/puppet/indirector/msgpack.rb +1 -1
  64. data/lib/puppet/indirector/request.rb +7 -8
  65. data/lib/puppet/indirector/resource_type/parser.rb +5 -3
  66. data/lib/puppet/info_service.rb +7 -0
  67. data/lib/puppet/info_service/class_information_service.rb +111 -0
  68. data/lib/puppet/module_tool/metadata.rb +32 -9
  69. data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +42 -38
  70. data/lib/puppet/network/authconfig.rb +21 -1
  71. data/lib/puppet/network/authorization.rb +8 -1
  72. data/lib/puppet/network/http/api/master/v3.rb +7 -1
  73. data/lib/puppet/network/http/api/master/v3/environment.rb +59 -0
  74. data/lib/puppet/node/environment.rb +9 -2
  75. data/lib/puppet/parser.rb +3 -0
  76. data/lib/puppet/parser/ast/pops_bridge.rb +39 -1
  77. data/lib/puppet/parser/compiler.rb +302 -12
  78. data/lib/puppet/parser/compiler/catalog_validator.rb +33 -0
  79. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +64 -0
  80. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +38 -0
  81. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +20 -0
  82. data/lib/puppet/parser/environment_compiler.rb +165 -0
  83. data/lib/puppet/parser/functions/assert_type.rb +46 -16
  84. data/lib/puppet/parser/functions/defined.rb +105 -68
  85. data/lib/puppet/parser/functions/each.rb +85 -27
  86. data/lib/puppet/parser/functions/filter.rb +59 -23
  87. data/lib/puppet/parser/functions/hiera.rb +83 -27
  88. data/lib/puppet/parser/functions/hiera_array.rb +71 -28
  89. data/lib/puppet/parser/functions/hiera_hash.rb +81 -30
  90. data/lib/puppet/parser/functions/hiera_include.rb +81 -40
  91. data/lib/puppet/parser/functions/map.rb +55 -20
  92. data/lib/puppet/parser/functions/match.rb +27 -12
  93. data/lib/puppet/parser/functions/reduce.rb +97 -60
  94. data/lib/puppet/parser/functions/with.rb +16 -8
  95. data/lib/puppet/parser/resource.rb +98 -19
  96. data/lib/puppet/plugins/configuration.rb +3 -2
  97. data/lib/puppet/plugins/data_providers.rb +12 -60
  98. data/lib/puppet/plugins/data_providers/data_provider.rb +283 -0
  99. data/lib/puppet/plugins/data_providers/registry.rb +84 -0
  100. data/lib/puppet/pops.rb +19 -17
  101. data/lib/puppet/pops/adapters.rb +12 -0
  102. data/lib/puppet/pops/binder/binder.rb +2 -2
  103. data/lib/puppet/pops/binder/bindings_checker.rb +1 -1
  104. data/lib/puppet/pops/binder/bindings_label_provider.rb +3 -1
  105. data/lib/puppet/pops/binder/bindings_loader.rb +6 -2
  106. data/lib/puppet/pops/binder/bindings_model_meta.rb +2 -2
  107. data/lib/puppet/pops/binder/config/binder_config.rb +1 -1
  108. data/lib/puppet/pops/binder/injector.rb +4 -4
  109. data/lib/puppet/pops/binder/key_factory.rb +3 -9
  110. data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +68 -9
  111. data/lib/puppet/pops/evaluator/access_operator.rb +27 -60
  112. data/lib/puppet/pops/evaluator/closure.rb +8 -8
  113. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -1
  114. data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
  115. data/lib/puppet/pops/evaluator/literal_evaluator.rb +87 -0
  116. data/lib/puppet/pops/evaluator/relationship_operator.rb +7 -1
  117. data/lib/puppet/pops/functions/dispatcher.rb +3 -3
  118. data/lib/puppet/pops/issues.rb +1 -1
  119. data/lib/puppet/pops/label_provider.rb +1 -1
  120. data/lib/puppet/pops/lookup.rb +25 -47
  121. data/lib/puppet/pops/lookup/explainer.rb +402 -0
  122. data/lib/puppet/pops/lookup/invocation.rb +117 -0
  123. data/lib/puppet/pops/merge_strategy.rb +73 -5
  124. data/lib/puppet/pops/model/factory.rb +34 -0
  125. data/lib/puppet/pops/model/model_label_provider.rb +10 -1
  126. data/lib/puppet/pops/model/model_meta.rb +15 -0
  127. data/lib/puppet/pops/model/model_tree_dumper.rb +18 -0
  128. data/lib/puppet/pops/parser/code_merger.rb +13 -1
  129. data/lib/puppet/pops/parser/egrammar.ra +56 -3
  130. data/lib/puppet/pops/parser/eparser.rb +1549 -1352
  131. data/lib/puppet/pops/parser/lexer2.rb +31 -6
  132. data/lib/puppet/pops/parser/locator.rb +1 -1
  133. data/lib/puppet/pops/parser/parser_support.rb +25 -13
  134. data/lib/puppet/pops/types/enumeration.rb +1 -2
  135. data/lib/puppet/pops/types/type_asserter.rb +16 -15
  136. data/lib/puppet/pops/types/type_assertion_error.rb +1 -0
  137. data/lib/puppet/pops/types/type_calculator.rb +171 -1020
  138. data/lib/puppet/pops/types/type_factory.rb +87 -148
  139. data/lib/puppet/pops/types/type_mismatch_describer.rb +743 -0
  140. data/lib/puppet/pops/types/type_parser.rb +116 -127
  141. data/lib/puppet/pops/types/types.rb +1394 -255
  142. data/lib/puppet/pops/types/types_meta.rb +0 -234
  143. data/lib/puppet/pops/validation.rb +7 -2
  144. data/lib/puppet/pops/validation/checker4_0.rb +28 -0
  145. data/lib/puppet/provider/augeas/augeas.rb +50 -0
  146. data/lib/puppet/provider/group/directoryservice.rb +10 -0
  147. data/lib/puppet/provider/package/dnf.rb +41 -0
  148. data/lib/puppet/provider/package/gem.rb +7 -2
  149. data/lib/puppet/provider/package/rpm.rb +1 -0
  150. data/lib/puppet/provider/package/windows/exe_package.rb +10 -8
  151. data/lib/puppet/provider/package/windows/msi_package.rb +4 -3
  152. data/lib/puppet/provider/package/windows/package.rb +9 -1
  153. data/lib/puppet/provider/package/yum.rb +14 -9
  154. data/lib/puppet/provider/service/bsd.rb +1 -1
  155. data/lib/puppet/provider/service/debian.rb +21 -0
  156. data/lib/puppet/provider/service/init.rb +6 -0
  157. data/lib/puppet/provider/service/rcng.rb +51 -0
  158. data/lib/puppet/provider/service/redhat.rb +2 -1
  159. data/lib/puppet/provider/service/smf.rb +43 -2
  160. data/lib/puppet/provider/service/src.rb +27 -0
  161. data/lib/puppet/provider/service/systemd.rb +15 -3
  162. data/lib/puppet/provider/sshkey/parsed.rb +19 -9
  163. data/lib/puppet/reference/report.rb +9 -12
  164. data/lib/puppet/reports.rb +5 -1
  165. data/lib/puppet/resource.rb +50 -73
  166. data/lib/puppet/resource/capability_finder.rb +95 -0
  167. data/lib/puppet/resource/catalog.rb +47 -7
  168. data/lib/puppet/resource/status.rb +0 -2
  169. data/lib/puppet/resource/type.rb +238 -44
  170. data/lib/puppet/resource/type_collection.rb +60 -2
  171. data/lib/puppet/settings.rb +2 -2
  172. data/lib/puppet/ssl/certificate_authority/interface.rb +2 -2
  173. data/lib/puppet/ssl/oids.rb +9 -1
  174. data/lib/puppet/transaction.rb +4 -1
  175. data/lib/puppet/transaction/additional_resource_generator.rb +71 -8
  176. data/lib/puppet/transaction/resource_harness.rb +9 -4
  177. data/lib/puppet/type.rb +74 -3
  178. data/lib/puppet/type/augeas.rb +8 -0
  179. data/lib/puppet/type/file/source.rb +14 -12
  180. data/lib/puppet/type/user.rb +4 -2
  181. data/lib/puppet/util/windows/security.rb +4 -1
  182. data/lib/puppet/util/windows/taskscheduler.rb +1 -1
  183. data/lib/puppet/version.rb +1 -1
  184. data/spec/fixtures/unit/application/environments/production/data/common.yaml +3 -0
  185. data/spec/fixtures/unit/application/environments/production/environment.conf +1 -0
  186. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/data/bad.json +3 -0
  187. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/environment.conf +2 -0
  188. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/hiera.yaml +5 -0
  189. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/manifests/site.pp +5 -0
  190. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/data/bad.yaml +3 -0
  191. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/environment.conf +2 -0
  192. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/hiera.yaml +5 -0
  193. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/manifests/site.pp +5 -0
  194. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/data/common.yaml +2 -0
  195. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/environment.conf +2 -0
  196. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/manifests/site.pp +1 -0
  197. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/data/common.yaml +2 -0
  198. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/manifests/init.pp +5 -0
  199. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/metadata.json +9 -0
  200. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/first.json +3 -0
  201. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/name.yaml +2 -0
  202. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/second.json +3 -0
  203. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/single.yaml +2 -0
  204. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data2/single.yaml +2 -0
  205. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/environment.conf +2 -0
  206. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +18 -0
  207. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +5 -0
  208. data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +46 -0
  209. data/spec/fixtures/unit/data_providers/environments/hiera_misc/environment.conf +2 -0
  210. data/spec/fixtures/unit/data_providers/environments/hiera_misc/manifests/site.pp +1 -0
  211. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/data/common.yaml +30 -0
  212. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/manifests/init.pp +13 -0
  213. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/metadata.json +9 -0
  214. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/environment.conf +2 -0
  215. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/manifests/site.pp +1 -0
  216. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/first.json +3 -0
  217. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/name.yaml +1 -0
  218. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/second.json +3 -0
  219. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/single.yaml +2 -0
  220. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data2/single.yaml +2 -0
  221. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/hiera.yaml +18 -0
  222. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/manifests/init.pp +5 -0
  223. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/metadata.json +9 -0
  224. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +1 -0
  225. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_module_data.rb +1 -0
  226. data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +3 -0
  227. data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/hiera.yaml +8 -0
  228. data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/manifests/init.pp +5 -0
  229. data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/metadata.json +9 -0
  230. data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +9 -0
  231. data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/manifests/init.pp +3 -0
  232. data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/metadata.json +9 -0
  233. data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +10 -0
  234. data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +23 -0
  235. data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/manifests/init.pp +3 -0
  236. data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/metadata.json +9 -0
  237. data/spec/fixtures/unit/provider/package/yum/yum-check-update-security.txt +184 -0
  238. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_get/should_yield_to_the_block.yml +24 -0
  239. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_head/should_yield_to_the_block.yml +24 -0
  240. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_post/should_yield_to_the_block.yml +24 -0
  241. data/spec/integration/data_binding_spec.rb +229 -0
  242. data/spec/integration/file_bucket/file_spec.rb +2 -2
  243. data/spec/integration/parser/compiler_spec.rb +23 -19
  244. data/spec/integration/parser/resource_expressions_spec.rb +4 -4
  245. data/spec/integration/parser/undef_param_spec.rb +1 -1
  246. data/spec/integration/resource/catalog_spec.rb +1 -1
  247. data/spec/integration/type/package_spec.rb +2 -0
  248. data/spec/integration/util/windows/security_spec.rb +18 -0
  249. data/spec/lib/matchers/include_in_order.rb +2 -2
  250. data/spec/shared_behaviours/iterative_functions.rb +8 -8
  251. data/spec/spec_helper.rb +7 -0
  252. data/spec/unit/agent/locker_spec.rb +4 -4
  253. data/spec/unit/agent_spec.rb +0 -8
  254. data/spec/unit/application/agent_spec.rb +5 -0
  255. data/spec/unit/application/apply_spec.rb +8 -0
  256. data/spec/unit/application/filebucket_spec.rb +87 -1
  257. data/spec/unit/application/lookup_spec.rb +195 -0
  258. data/spec/unit/appmgmt_spec.rb +657 -0
  259. data/spec/unit/capability_spec.rb +414 -0
  260. data/spec/unit/configurer_spec.rb +7 -1
  261. data/spec/unit/context/trusted_information_spec.rb +24 -1
  262. data/spec/unit/daemon_spec.rb +18 -8
  263. data/spec/unit/data_providers/hiera_data_provider_spec.rb +201 -0
  264. data/spec/unit/file_bucket/dipper_spec.rb +210 -1
  265. data/spec/unit/functions/assert_type_spec.rb +5 -7
  266. data/spec/unit/functions/defined_spec.rb +2 -2
  267. data/spec/unit/functions/epp_spec.rb +2 -2
  268. data/spec/unit/functions/lookup_spec.rb +200 -9
  269. data/spec/unit/functions/regsubst_spec.rb +17 -8
  270. data/spec/unit/functions/scanf_spec.rb +1 -1
  271. data/spec/unit/functions/split_spec.rb +2 -2
  272. data/spec/unit/functions/versioncmp_spec.rb +36 -0
  273. data/spec/unit/functions4_spec.rb +58 -72
  274. data/spec/unit/indirector/catalog/compiler_spec.rb +28 -8
  275. data/spec/unit/indirector/catalog/static_compiler_spec.rb +38 -20
  276. data/spec/unit/indirector/data_binding/none_spec.rb +2 -2
  277. data/spec/unit/indirector/file_bucket_file/file_spec.rb +52 -1
  278. data/spec/unit/indirector/request_spec.rb +8 -8
  279. data/spec/unit/info_service_spec.rb +236 -0
  280. data/spec/unit/module_tool/metadata_spec.rb +31 -2
  281. data/spec/unit/network/authconfig_spec.rb +62 -32
  282. data/spec/unit/network/authorization_spec.rb +30 -2
  283. data/spec/unit/network/http/connection_spec.rb +14 -19
  284. data/spec/unit/parser/compiler_spec.rb +86 -2
  285. data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
  286. data/spec/unit/parser/resource_spec.rb +2 -20
  287. data/spec/unit/pops/binder/config/binder_config_spec.rb +1 -1
  288. data/spec/unit/pops/binder/injector_spec.rb +3 -3
  289. data/spec/unit/pops/evaluator/access_ops_spec.rb +13 -11
  290. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +1 -2
  291. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +19 -11
  292. data/spec/unit/pops/evaluator/literal_evaluator_spec.rb +43 -0
  293. data/spec/unit/pops/label_provider_spec.rb +5 -1
  294. data/spec/unit/pops/parser/lexer2_spec.rb +33 -7
  295. data/spec/unit/pops/parser/parse_application_spec.rb +40 -0
  296. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +4 -0
  297. data/spec/unit/pops/parser/parse_capabilities_spec.rb +47 -0
  298. data/spec/unit/pops/parser/parse_site_spec.rb +38 -0
  299. data/spec/unit/pops/parser/parser_rspec_helper.rb +5 -0
  300. data/spec/unit/pops/parser/parser_spec.rb +18 -0
  301. data/spec/unit/pops/types/type_calculator_spec.rb +427 -444
  302. data/spec/unit/pops/types/type_factory_spec.rb +12 -12
  303. data/spec/unit/pops/types/type_parser_spec.rb +7 -12
  304. data/spec/unit/pops/validator/validator_spec.rb +25 -0
  305. data/spec/unit/provider/augeas/augeas_spec.rb +50 -0
  306. data/spec/unit/provider/group/directoryservice_spec.rb +33 -0
  307. data/spec/unit/provider/group/windows_adsi_spec.rb +3 -0
  308. data/spec/unit/provider/package/dnf_spec.rb +92 -0
  309. data/spec/unit/provider/package/gem_spec.rb +7 -0
  310. data/spec/unit/provider/package/rpm_spec.rb +25 -2
  311. data/spec/unit/provider/package/windows/package_spec.rb +41 -0
  312. data/spec/unit/provider/package/yum_spec.rb +21 -13
  313. data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +10 -0
  314. data/spec/unit/provider/service/debian_spec.rb +27 -0
  315. data/spec/unit/provider/service/rcng_spec.rb +41 -0
  316. data/spec/unit/provider/service/redhat_spec.rb +8 -1
  317. data/spec/unit/provider/service/smf_spec.rb +30 -5
  318. data/spec/unit/provider/service/src_spec.rb +19 -4
  319. data/spec/unit/provider/service/systemd_spec.rb +78 -29
  320. data/spec/unit/provider/sshkey/parsed_spec.rb +23 -0
  321. data/spec/unit/reports_spec.rb +10 -0
  322. data/spec/unit/resource/capability_finder_spec.rb +56 -0
  323. data/spec/unit/resource/catalog_spec.rb +31 -8
  324. data/spec/unit/resource/type_collection_spec.rb +23 -2
  325. data/spec/unit/resource/type_spec.rb +1 -1
  326. data/spec/unit/resource_spec.rb +22 -4
  327. data/spec/unit/settings_spec.rb +90 -1
  328. data/spec/unit/ssl/certificate_authority/interface_spec.rb +4 -3
  329. data/spec/unit/ssl/oids_spec.rb +8 -0
  330. data/spec/unit/transaction/additional_resource_generator_spec.rb +78 -5
  331. data/spec/unit/transaction/report_spec.rb +24 -1
  332. data/spec/unit/type/package_spec.rb +1 -0
  333. data/spec/unit/type/user_spec.rb +14 -7
  334. data/spec/unit/type_spec.rb +1 -1
  335. metadata +169 -5
  336. data/lib/puppet/pops/evaluator/callable_mismatch_describer.rb +0 -175
  337. data/spec/integration/data_binding.rb +0 -104
@@ -1,35 +1,70 @@
1
- # Applies a parameterized block to each element in a sequence of entries from the first
2
- # argument and returns an array or hash (same type as left operand for array/hash, and array for
3
- # other enumerable types) with the entries for which the block evaluates to `true`.
1
+ # Applies a [lambda](http://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html)
2
+ # to every value in a data structure and returns an array or hash containing any elements
3
+ # for which the lambda evaluates to `true`.
4
4
  #
5
- # This function takes two mandatory arguments: the first should be an Array, a Hash, or an
6
- # Enumerable object (integer, Integer range, or String),
7
- # and the second a parameterized block as produced by the puppet syntax:
5
+ # This function takes two mandatory arguments, in this order:
8
6
  #
9
- # $a.filter |$x| { ... }
10
- # filter($a) |$x| { ... }
7
+ # 1. An array or hash the function will iterate over.
8
+ # 2. A lambda, which the function calls for each element in the first argument. It can
9
+ # request one or two parameters.
11
10
  #
12
- # When the first argument is something other than a Hash, the block is called with each entry in turn.
13
- # When the first argument is a Hash the entry is an array with `[key, value]`.
11
+ # @example Using the `filter` function
14
12
  #
15
- # @example Using filter with one parameter
13
+ # `$filtered_data = $data.filter |$parameter| { <PUPPET CODE BLOCK> }`
16
14
  #
17
- # # selects all that end with berry
18
- # $a = ["raspberry", "blueberry", "orange"]
19
- # $a.filter |$x| { $x =~ /berry$/ } # rasberry, blueberry
15
+ # or
20
16
  #
21
- # If the block defines two parameters, they will be set to `index, value` (with index starting at 0) for all
22
- # enumerables except Hash, and to `key, value` for a Hash.
17
+ # `$filtered_data = filter($data) |$parameter| { <PUPPET CODE BLOCK> }`
23
18
  #
24
- # @example Using filter with two parameters
19
+ # When the first argument (`$data` in the above example) is an array, Puppet passes each
20
+ # value in turn to the lambda and returns an array containing the results.
25
21
  #
26
- # # selects all that end with 'berry' at an even numbered index
27
- # $a = ["raspberry", "blueberry", "orange"]
28
- # $a.filter |$index, $x| { $index % 2 == 0 and $x =~ /berry$/ } # raspberry
22
+ # @example Using the `filter` function with an array and a one-parameter lambda
29
23
  #
30
- # # selects all that end with 'berry' and value >= 1
31
- # $a = {"raspberry"=>0, "blueberry"=>1, "orange"=>1}
32
- # $a.filter |$key, $x| { $x =~ /berry$/ and $x >= 1 } # blueberry
24
+ # ~~~ puppet
25
+ # # For the array $data, return an array containing the values that end with "berry"
26
+ # $data = ["orange", "blueberry", "raspberry"]
27
+ # $filtered_data = $data.filter |$items| { $items =~ /berry$/ }
28
+ # # $filtered_data = [blueberry, raspberry]
29
+ # ~~~
30
+ #
31
+ # When the first argument is a hash, Puppet passes each key and value pair to the lambda
32
+ # as an array in the form `[key, value]` and returns a hash containing the results.
33
+ #
34
+ # @example Using the `filter` function with a hash and a one-parameter lambda
35
+ #
36
+ # ~~~ puppet
37
+ # # For the hash $data, return a hash containing all values of keys that end with "berry"
38
+ # $data = { "orange" => 0, "blueberry" => 1, "raspberry" => 2 }
39
+ # $filtered_data = $data.filter |$items| { $items[0] =~ /berry$/ }
40
+ # # $filtered_data = {blueberry => 1, raspberry => 2}
41
+ #
42
+ # When the first argument is an array and the lambda has two parameters, Puppet passes the
43
+ # array's indexes (enumerated from 0) in the first parameter and its values in the second
44
+ # parameter.
45
+ #
46
+ # @example Using the `filter` function with an array and a two-parameter lambda
47
+ #
48
+ # ~~~ puppet
49
+ # # For the array $data, return an array of all keys that both end with "berry" and have
50
+ # # an even-numbered index
51
+ # $data = ["orange", "blueberry", "raspberry"]
52
+ # $filtered_data = $data.filter |$indexes, $values| { $indexes % 2 == 0 and $values =~ /berry$/ }
53
+ # # $filtered_data = [raspberry]
54
+ # ~~~
55
+ #
56
+ # When the first argument is a hash, Puppet passes its keys to the first parameter and its
57
+ # values to the second parameter.
58
+ #
59
+ # @example Using the `filter` function with a hash and a two-parameter lambda
60
+ #
61
+ # ~~~ puppet
62
+ # # For the hash $data, return a hash of all keys that both end with "berry" and have
63
+ # # values less than or equal to 1
64
+ # $data = { "orange" => 0, "blueberry" => 1, "raspberry" => 2 }
65
+ # $filtered_data = $data.filter |$keys, $values| { $keys =~ /berry$/ and $values <= 1 }
66
+ # # $filtered_data = {blueberry => 1}
67
+ # ~~~
33
68
  #
34
69
  # @since 4.0.0
35
70
  #
@@ -1,7 +1,80 @@
1
1
  require 'hiera/puppet_function'
2
-
3
- # @see lib/puppet/parser/functions/hiera.rb for documentation
4
- # TODO: Move docs here when the format has been determined.
2
+ # Performs a standard priority lookup of the hierarchy and returns the most specific value
3
+ # for a given key. The returned value can be any type of data.
4
+ #
5
+ # The function takes up to three arguments, in this order:
6
+ #
7
+ # 1. A string key that Hiera searches for in the hierarchy. **Required**.
8
+ # 2. An optional default value to return if Hiera doesn't find anything matching the key.
9
+ # * If this argument isn't provided and this function results in a lookup failure, Puppet
10
+ # fails with a compilation error.
11
+ # 3. The optional name of an arbitrary
12
+ # [hierarchy level](https://docs.puppetlabs.com/hiera/latest/hierarchy.html) to insert at the
13
+ # top of the hierarchy. This lets you temporarily modify the hierarchy for a single lookup.
14
+ # * If Hiera doesn't find a matching key in the overriding hierarchy level, it continues
15
+ # searching the rest of the hierarchy.
16
+ #
17
+ # The `hiera` function does **not** find all matches throughout a hierarchy, instead
18
+ # returining the first specific value starting at the top of the hierarchy. To search
19
+ # throughout a hierarchy, use the `hiera_array` or `hiera_hash` functions.
20
+ #
21
+ # @example Using `hiera`
22
+ #
23
+ # ~~~ yaml
24
+ # # Assuming hiera.yaml
25
+ # # :hierarchy:
26
+ # # - web01.example.com
27
+ # # - common
28
+ #
29
+ # # Assuming web01.example.com.yaml:
30
+ # # users:
31
+ # # - "Amy Barry"
32
+ # # - "Carrie Douglas"
33
+ #
34
+ # # Assuming common.yaml:
35
+ # users:
36
+ # admins:
37
+ # - "Edith Franklin"
38
+ # - "Ginny Hamilton"
39
+ # regular:
40
+ # - "Iris Jackson"
41
+ # - "Kelly Lambert"
42
+ # ~~~
43
+ #
44
+ # ~~~ puppet
45
+ # # Assuming we are not web01.example.com:
46
+ #
47
+ # $users = hiera('users', undef)
48
+ #
49
+ # # $users contains {admins => ["Edith Franklin", "Ginny Hamilton"],
50
+ # # regular => ["Iris Jackson", "Kelly Lambert"]}
51
+ # ~~~
52
+ #
53
+ # You can optionally generate the default value with a
54
+ # [lambda](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html) that
55
+ # takes one parameter.
56
+ #
57
+ # @example Using `hiera` with a lambda
58
+ #
59
+ # ~~~ puppet
60
+ # # Assuming the same Hiera data as the previous example:
61
+ #
62
+ # $users = hiera('users') | $key | { "Key \'${key}\' not found" }
63
+ #
64
+ # # $users contains {admins => ["Edith Franklin", "Ginny Hamilton"],
65
+ # # regular => ["Iris Jackson", "Kelly Lambert"]}
66
+ # # If hiera couldn't match its key, it would return the lambda result,
67
+ # # "Key 'users' not found".
68
+ # ~~~
69
+ #
70
+ # The returned value's data type depends on the types of the results. In the example
71
+ # above, Hiera matches the 'users' key and returns it as a hash.
72
+ #
73
+ # See
74
+ # [the documentation](https://docs.puppetlabs.com/hiera/latest/puppet.html#hiera-lookup-functions)
75
+ # for more information about Hiera lookup functions.
76
+ #
77
+ # @since 4.0.0
5
78
  #
6
79
  Puppet::Functions.create_function(:hiera, Hiera::PuppetFunction) do
7
80
  init_dispatch
@@ -1,7 +1,69 @@
1
1
  require 'hiera/puppet_function'
2
2
 
3
- # @see lib/puppet/parser/functions/hiera_array.rb for documentation
4
- # TODO: Move docs here when the format has been determined.
3
+ # Finds all matches of a key throughout the hierarchy and returns them as a single flattened
4
+ # array of unique values. If any of the matched values are arrays, they're flattened and
5
+ # included in the results. This is called an
6
+ # [array merge lookup](https://docs.puppetlabs.com/hiera/latest/lookup_types.html#array-merge).
7
+ #
8
+ # The `hiera_array` function takes up to three arguments, in this order:
9
+ #
10
+ # 1. A string key that Hiera searches for in the hierarchy. **Required**.
11
+ # 2. An optional default value to return if Hiera doesn't find anything matching the key.
12
+ # * If this argument isn't provided and this function results in a lookup failure, Puppet
13
+ # fails with a compilation error.
14
+ # 3. The optional name of an arbitrary
15
+ # [hierarchy level](https://docs.puppetlabs.com/hiera/latest/hierarchy.html) to insert at the
16
+ # top of the hierarchy. This lets you temporarily modify the hierarchy for a single lookup.
17
+ # * If Hiera doesn't find a matching key in the overriding hierarchy level, it continues
18
+ # searching the rest of the hierarchy.
19
+ #
20
+ # @example Using `hiera_array`
21
+ #
22
+ # ~~~ yaml
23
+ # # Assuming hiera.yaml
24
+ # # :hierarchy:
25
+ # # - web01.example.com
26
+ # # - common
27
+ #
28
+ # # Assuming common.yaml:
29
+ # # users:
30
+ # # - 'cdouglas = regular'
31
+ # # - 'efranklin = regular'
32
+ #
33
+ # # Assuming web01.example.com.yaml:
34
+ # # users: 'abarry = admin'
35
+ # ~~~
36
+ #
37
+ # ~~~ puppet
38
+ # $allusers = hiera_array('users', undef)
39
+ #
40
+ # # $allusers contains ["cdouglas = regular", "efranklin = regular", "abarry = admin"].
41
+ # ~~~
42
+ #
43
+ # You can optionally generate the default value with a
44
+ # [lambda](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html) that
45
+ # takes one parameter.
46
+ #
47
+ # @example Using `hiera_array` with a lambda
48
+ #
49
+ # ~~~ puppet
50
+ # # Assuming the same Hiera data as the previous example:
51
+ #
52
+ # $allusers = hiera_array('users') | $key | { "Key \'${key}\' not found" }
53
+ #
54
+ # # $allusers contains ["cdouglas = regular", "efranklin = regular", "abarry = admin"].
55
+ # # If hiera_array couldn't match its key, it would return the lambda result,
56
+ # # "Key 'users' not found".
57
+ # ~~~
58
+ #
59
+ # `hiera_array` expects that all values returned will be strings or arrays. If any matched
60
+ # value is a hash, Puppet raises a type mismatch error.
61
+ #
62
+ # See
63
+ # [the documentation](https://docs.puppetlabs.com/hiera/latest/puppet.html#hiera-lookup-functions)
64
+ # for more information about Hiera lookup functions.
65
+ #
66
+ # @since 4.0.0
5
67
  #
6
68
  Puppet::Functions.create_function(:hiera_array, Hiera::PuppetFunction) do
7
69
  init_dispatch
@@ -9,4 +71,4 @@ Puppet::Functions.create_function(:hiera_array, Hiera::PuppetFunction) do
9
71
  def merge_type
10
72
  :array
11
73
  end
12
- end
74
+ end
@@ -1,7 +1,79 @@
1
1
  require 'hiera/puppet_function'
2
2
 
3
- # @see lib/puppet/parser/functions/hiera_hash.rb for documentation
4
- # TODO: Move docs here when the format has been determined.
3
+ # Finds all matches of a key throughout the hierarchy and returns them in a merged hash.
4
+ # If any of the matched hashes share keys, the final hash uses the value from the
5
+ # highest priority match. This is called a
6
+ # [hash merge lookup](https://docs.puppetlabs.com/hiera/latest/lookup_types.html#hash-merge).
7
+ #
8
+ # The merge strategy is determined by Hiera's
9
+ # [`:merge_behavior`](https://docs.puppetlabs.com/hiera/latest/configuring.html#mergebehavior)
10
+ # setting.
11
+ #
12
+ # The `hiera_hash` function takes up to three arguments, in this order:
13
+ #
14
+ # 1. A string key that Hiera searches for in the hierarchy. **Required**.
15
+ # 2. An optional default value to return if Hiera doesn't find anything matching the key.
16
+ # * If this argument isn't provided and this function results in a lookup failure, Puppet
17
+ # fails with a compilation error.
18
+ # 3. The optional name of an arbitrary
19
+ # [hierarchy level](https://docs.puppetlabs.com/hiera/latest/hierarchy.html) to insert at the
20
+ # top of the hierarchy. This lets you temporarily modify the hierarchy for a single lookup.
21
+ # * If Hiera doesn't find a matching key in the overriding hierarchy level, it continues
22
+ # searching the rest of the hierarchy.
23
+ #
24
+ # @example Using `hiera_hash`
25
+ #
26
+ # ~~~ yaml
27
+ # # Assuming hiera.yaml
28
+ # # :hierarchy:
29
+ # # - web01.example.com
30
+ # # - common
31
+ #
32
+ # # Assuming common.yaml:
33
+ # # users:
34
+ # # regular:
35
+ # # 'cdouglas': 'Carrie Douglas'
36
+ #
37
+ # # Assuming web01.example.com.yaml:
38
+ # # users:
39
+ # # administrators:
40
+ # # 'aberry': 'Amy Berry'
41
+ # ~~~
42
+ #
43
+ # ~~~ puppet
44
+ # # Assuming we are not web01.example.com:
45
+ #
46
+ # $allusers = hiera_hash('users', undef)
47
+ #
48
+ # # $allusers contains {regular => {"cdouglas" => "Carrie Douglas"},
49
+ # # administrators => {"aberry" => "Amy Berry"}}
50
+ # ~~~
51
+ #
52
+ # You can optionally generate the default value with a
53
+ # [lambda](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html) that
54
+ # takes one parameter.
55
+ #
56
+ # @example Using `hiera_hash` with a lambda
57
+ #
58
+ # ~~~ puppet
59
+ # # Assuming the same Hiera data as the previous example:
60
+ #
61
+ # $allusers = hiera_hash('users') | $key | { "Key \'${key}\' not found" }
62
+ #
63
+ # # $allusers contains {regular => {"cdouglas" => "Carrie Douglas"},
64
+ # # administrators => {"aberry" => "Amy Berry"}}
65
+ # # If hiera_hash couldn't match its key, it would return the lambda result,
66
+ # # "Key 'users' not found".
67
+ # ~~~
68
+ #
69
+ # `hiera_hash` expects that all values returned will be hashes. If any of the values
70
+ # found in the data sources are strings or arrays, Puppet raises a type mismatch error.
71
+ #
72
+ # See
73
+ # [the documentation](https://docs.puppetlabs.com/hiera/latest/puppet.html#hiera-lookup-functions)
74
+ # for more information about Hiera lookup functions.
75
+ #
76
+ # @since 4.0.0
5
77
  #
6
78
  Puppet::Functions.create_function(:hiera_hash, Hiera::PuppetFunction) do
7
79
  init_dispatch
@@ -1,7 +1,80 @@
1
1
  require 'hiera/puppet_function'
2
2
 
3
- # @see lib/puppet/parser/functions/hiera_include.rb for documentation
4
- # TODO: Move docs here when the format has been determined.
3
+ # Assigns classes to a node using an
4
+ # [array merge lookup](https://docs.puppetlabs.com/hiera/latest/lookup_types.htmlarray-merge)
5
+ # that retrieves the value for a user-specified key from Hiera's data.
6
+ #
7
+ # The `hiera_include` function requires:
8
+ #
9
+ # - A string key name to use for classes.
10
+ # - A call to this function (i.e. `hiera_include('classes')`) in your environment's
11
+ # `sites.pp` manifest, outside of any node definitions and below any top-scope variables
12
+ # that Hiera uses in lookups.
13
+ # - `classes` keys in the appropriate Hiera data sources, with an array for each
14
+ # `classes` key and each value of the array containing the name of a class.
15
+ #
16
+ # The function takes up to three arguments, in this order:
17
+ #
18
+ # 1. A string key that Hiera searches for in the hierarchy. **Required**.
19
+ # 2. An optional default value to return if Hiera doesn't find anything matching the key.
20
+ # * If this argument isn't provided and this function results in a lookup failure, Puppet
21
+ # fails with a compilation error.
22
+ # 3. The optional name of an arbitrary
23
+ # [hierarchy level](https://docs.puppetlabs.com/hiera/latest/hierarchy.html) to insert at the
24
+ # top of the hierarchy. This lets you temporarily modify the hierarchy for a single lookup.
25
+ # * If Hiera doesn't find a matching key in the overriding hierarchy level, it continues
26
+ # searching the rest of the hierarchy.
27
+ #
28
+ # The function uses an
29
+ # [array merge lookup](https://docs.puppetlabs.com/hiera/latest/lookup_types.htmlarray-merge)
30
+ # to retrieve the `classes` array, so every node gets every class from the hierarchy.
31
+ #
32
+ # @example Using `hiera_include`
33
+ #
34
+ # ~~~ yaml
35
+ # # Assuming hiera.yaml
36
+ # # :hierarchy:
37
+ # # - web01.example.com
38
+ # # - common
39
+ #
40
+ # # Assuming web01.example.com.yaml:
41
+ # # classes:
42
+ # # - apache::mod::php
43
+ #
44
+ # # Assuming common.yaml:
45
+ # # classes:
46
+ # # - apache
47
+ # ~~~
48
+ #
49
+ # ~~~ puppet
50
+ # # In site.pp, outside of any node definitions and below any top-scope variables:
51
+ # hiera_include('classes', undef)
52
+ #
53
+ # # Puppet assigns the apache and apache::mod::php classes to the web01.example.com node.
54
+ # ~~~
55
+ #
56
+ # You can optionally generate the default value with a
57
+ # [lambda](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html) that
58
+ # takes one parameter.
59
+ #
60
+ # @example Using `hiera_include` with a lambda
61
+ #
62
+ # ~~~ puppet
63
+ # # Assuming the same Hiera data as the previous example:
64
+ #
65
+ # # In site.pp, outside of any node definitions and below any top-scope variables:
66
+ # hiera_include('classes') | $key | {"Key \'${key}\' not found" }
67
+ #
68
+ # # Puppet assigns the apache and apache::mod::php classes to the web01.example.com node.
69
+ # # If hiera_include couldn't match its key, it would return the lambda result,
70
+ # # "Key 'classes' not found".
71
+ # ~~~
72
+ #
73
+ # See [the documentation](http://links.puppetlabs.com/hierainclude) for more information
74
+ # and a more detailed example of how `hiera_include` uses array merge lookups to classify
75
+ # nodes.
76
+ #
77
+ # @since 4.0.0
5
78
  #
6
79
  Puppet::Functions.create_function(:hiera_include, Hiera::PuppetFunction) do
7
80
  init_dispatch
@@ -150,18 +150,16 @@
150
150
  # - Since 4.0.0
151
151
  Puppet::Functions.create_function(:lookup, Puppet::Functions::InternalFunction) do
152
152
  name_t = 'Variant[String,Array[String]]'
153
- value_type_t = 'Optional[Type]'
153
+ value_type_t = 'Type'
154
154
  default_value_t = 'Any'
155
- override_t = 'Optional[Hash[String,Any]]'
156
- default_values_hash_t = 'Optional[Hash[String,Any]]'
157
- merge_t = 'Optional[Variant[String[1],Hash[String,Scalar]]]'
155
+ merge_t = 'Variant[String[1],Hash[String,Scalar]]'
158
156
  block_t = "Callable[#{name_t}]"
159
157
  option_pairs =
160
- "value_type=>#{value_type_t},"\
158
+ "value_type=>Optional[#{value_type_t}],"\
161
159
  "default_value=>Optional[#{default_value_t}],"\
162
- "override=>#{override_t},"\
163
- "default_values_hash=>#{default_values_hash_t},"\
164
- "merge=>#{merge_t}"\
160
+ "override=>Optional[Hash[String,Any]],"\
161
+ "default_values_hash=>Optional[Hash[String,Any]],"\
162
+ "merge=>Optional[#{merge_t}]"
165
163
 
166
164
  dispatch :lookup_1 do
167
165
  scope_param
@@ -172,10 +170,10 @@ Puppet::Functions.create_function(:lookup, Puppet::Functions::InternalFunction)
172
170
 
173
171
  dispatch :lookup_2 do
174
172
  scope_param
175
- param name_t, :name
176
- param value_type_t, :value_type
177
- param merge_t, :merge
178
- param default_value_t, :default_value
173
+ param name_t, :name
174
+ param "Optional[#{value_type_t}]", :value_type
175
+ param "Optional[#{merge_t}]", :merge
176
+ param default_value_t, :default_value
179
177
  end
180
178
 
181
179
  dispatch :lookup_3 do
@@ -202,23 +200,27 @@ Puppet::Functions.create_function(:lookup, Puppet::Functions::InternalFunction)
202
200
  end
203
201
 
204
202
  def lookup_1(scope, name, value_type=nil, merge=nil)
205
- Puppet::Pops::Lookup.lookup(scope, name, value_type, nil, false, {}, {}, merge)
203
+ do_lookup(scope, name, value_type, nil, false, {}, {}, merge)
206
204
  end
207
205
 
208
206
  def lookup_2(scope, name, value_type, merge, default_value)
209
- Puppet::Pops::Lookup.lookup(scope, name, value_type, default_value, true, {}, {}, merge)
207
+ do_lookup(scope, name, value_type, default_value, true, {}, {}, merge)
210
208
  end
211
209
 
212
210
  def lookup_3(scope, name, value_type=nil, merge=nil, &block)
213
- Puppet::Pops::Lookup.lookup(scope, name, value_type, nil, false, {}, {}, merge, &block)
211
+ do_lookup(scope, name, value_type, nil, false, {}, {}, merge, &block)
214
212
  end
215
213
 
216
214
  def lookup_4(scope, options_hash, &block)
217
- Puppet::Pops::Lookup.lookup(scope, options_hash['name'], *hash_args(options_hash), &block)
215
+ do_lookup(scope, options_hash['name'], *hash_args(options_hash), &block)
218
216
  end
219
217
 
220
218
  def lookup_5(scope, name, options_hash, &block)
221
- Puppet::Pops::Lookup.lookup(scope, name, *hash_args(options_hash), &block)
219
+ do_lookup(scope, name, *hash_args(options_hash), &block)
220
+ end
221
+
222
+ def do_lookup(scope, name, value_type, default_value, has_default, override, default_values_hash, merge, &block)
223
+ Puppet::Pops::Lookup.lookup(name, value_type, default_value, has_default, merge, Puppet::Pops::Lookup::Invocation.new(scope, override, default_values_hash), &block)
222
224
  end
223
225
 
224
226
  def hash_args(options_hash)