puppet 4.3.0 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (560) hide show
  1. checksums.yaml +7 -0
  2. data/COMMITTERS.md +2 -2
  3. data/CONTRIBUTING.md +6 -6
  4. data/LICENSE +1 -1
  5. data/README.md +8 -9
  6. data/conf/auth.conf +2 -2
  7. data/ext/README.environment +1 -1
  8. data/ext/build_defaults.yaml +1 -1
  9. data/ext/debian/README.source +1 -1
  10. data/ext/debian/control +1 -1
  11. data/ext/debian/copyright +4 -4
  12. data/ext/debian/puppetmaster.README.debian +11 -9
  13. data/ext/emacs/puppet-mode.el +1 -1
  14. data/ext/envpuppet +2 -2
  15. data/ext/ips/puppetagent.xml +1 -1
  16. data/ext/ips/puppetmaster.xml +1 -1
  17. data/ext/project_data.yaml +8 -0
  18. data/ext/puppet-test +3 -3
  19. data/ext/rack/example-passenger-vhost.conf +1 -1
  20. data/ext/redhat/puppet.spec.erb +2 -2
  21. data/ext/regexp_nodes/regexp_nodes.rb +1 -1
  22. data/ext/solaris/pkginfo +1 -1
  23. data/ext/solaris/smf/puppet.xml +1 -1
  24. data/ext/suse/puppet.spec +2 -2
  25. data/ext/upload_facts.rb +1 -1
  26. data/ext/windows/puppet_interactive.bat +6 -0
  27. data/ext/windows/puppet_shell.bat +9 -0
  28. data/ext/windows/run_puppet_interactive.bat +9 -0
  29. data/ext/yaml_nodes.rb +1 -1
  30. data/install.rb +30 -20
  31. data/lib/hiera/scope.rb +1 -1
  32. data/lib/puppet/agent.rb +1 -1
  33. data/lib/puppet/application/agent.rb +4 -2
  34. data/lib/puppet/application/apply.rb +7 -4
  35. data/lib/puppet/application/cert.rb +1 -1
  36. data/lib/puppet/application/device.rb +1 -1
  37. data/lib/puppet/application/filebucket.rb +1 -1
  38. data/lib/puppet/application/inspect.rb +1 -1
  39. data/lib/puppet/application/lookup.rb +45 -47
  40. data/lib/puppet/application/master.rb +2 -2
  41. data/lib/puppet/application/resource.rb +1 -1
  42. data/lib/puppet/configurer.rb +100 -22
  43. data/lib/puppet/data_providers/hiera_config.rb +28 -3
  44. data/lib/puppet/data_providers/hiera_interpolate.rb +30 -15
  45. data/lib/puppet/data_providers/hiera_support.rb +1 -1
  46. data/lib/puppet/data_providers/json_data_provider_factory.rb +2 -2
  47. data/lib/puppet/data_providers/lookup_adapter.rb +73 -26
  48. data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -2
  49. data/lib/puppet/defaults.rb +69 -22
  50. data/lib/puppet/environments.rb +3 -1
  51. data/lib/puppet/face/config.rb +1 -1
  52. data/lib/puppet/face/epp.rb +1 -1
  53. data/lib/puppet/face/help/man.erb +1 -1
  54. data/lib/puppet/face/module/install.rb +6 -6
  55. data/lib/puppet/face/parser.rb +12 -9
  56. data/lib/puppet/face/status.rb +2 -1
  57. data/lib/puppet/feature/cfpropertylist.rb +3 -0
  58. data/lib/puppet/feature/telnet.rb +9 -0
  59. data/lib/puppet/file_serving/http_metadata.rb +46 -0
  60. data/lib/puppet/file_serving/metadata.rb +18 -2
  61. data/lib/puppet/file_serving/terminus_selector.rb +2 -0
  62. data/lib/puppet/file_system/file_impl.rb +2 -2
  63. data/lib/puppet/file_system/memory_impl.rb +1 -1
  64. data/lib/puppet/file_system/uniquefile.rb +1 -1
  65. data/lib/puppet/file_system.rb +2 -2
  66. data/lib/puppet/forge/repository.rb +1 -31
  67. data/lib/puppet/forge.rb +1 -1
  68. data/lib/puppet/functions/assert_type.rb +9 -9
  69. data/lib/puppet/functions/each.rb +5 -13
  70. data/lib/puppet/functions/filter.rb +5 -14
  71. data/lib/puppet/functions/lookup.rb +126 -150
  72. data/lib/puppet/functions/map.rb +6 -14
  73. data/lib/puppet/functions/match.rb +1 -0
  74. data/lib/puppet/functions/reduce.rb +5 -13
  75. data/lib/puppet/functions/reverse_each.rb +82 -0
  76. data/lib/puppet/functions/scanf.rb +15 -18
  77. data/lib/puppet/functions/slice.rb +22 -36
  78. data/lib/puppet/functions/split.rb +2 -2
  79. data/lib/puppet/functions/step.rb +88 -0
  80. data/lib/puppet/functions/type.rb +70 -0
  81. data/lib/puppet/functions.rb +45 -6
  82. data/lib/puppet/graph/rb_tree_map.rb +1 -1
  83. data/lib/puppet/indirector/catalog/compiler.rb +188 -5
  84. data/lib/puppet/indirector/facts/facter.rb +2 -13
  85. data/lib/puppet/indirector/file_content/http.rb +15 -0
  86. data/lib/puppet/indirector/file_metadata/http.rb +27 -0
  87. data/lib/puppet/indirector/generic_http.rb +16 -0
  88. data/lib/puppet/indirector/hiera.rb +3 -1
  89. data/lib/puppet/indirector/indirection.rb +6 -2
  90. data/lib/puppet/indirector/json.rb +2 -2
  91. data/lib/puppet/indirector/node/exec.rb +1 -1
  92. data/lib/puppet/indirector/node/ldap.rb +1 -1
  93. data/lib/puppet/indirector/rest.rb +2 -1
  94. data/lib/puppet/info_service/class_information_service.rb +13 -12
  95. data/lib/puppet/loaders.rb +1 -0
  96. data/lib/puppet/module.rb +6 -2
  97. data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +9 -2
  98. data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +1 -1
  99. data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +2 -2
  100. data/lib/puppet/module_tool/tar/mini.rb +3 -3
  101. data/lib/puppet/network/http/pool.rb +9 -0
  102. data/lib/puppet/node/environment.rb +11 -2
  103. data/lib/puppet/node.rb +11 -2
  104. data/lib/puppet/parser/ast/pops_bridge.rb +19 -22
  105. data/lib/puppet/parser/compiler.rb +4 -11
  106. data/lib/puppet/parser/environment_compiler.rb +0 -1
  107. data/lib/puppet/parser/functions/fqdn_rand.rb +1 -1
  108. data/lib/puppet/parser/functions/inline_template.rb +1 -1
  109. data/lib/puppet/parser/functions/lookup.rb +128 -149
  110. data/lib/puppet/parser/functions/map.rb +1 -1
  111. data/lib/puppet/parser/functions/match.rb +1 -0
  112. data/lib/puppet/parser/functions/scanf.rb +15 -26
  113. data/lib/puppet/parser/functions/slice.rb +17 -24
  114. data/lib/puppet/parser/functions/split.rb +1 -1
  115. data/lib/puppet/parser/functions.rb +28 -16
  116. data/lib/puppet/parser/resource.rb +19 -17
  117. data/lib/puppet/parser/scope.rb +176 -5
  118. data/lib/puppet/plugins/data_providers/data_provider.rb +56 -14
  119. data/lib/puppet/pops/adaptable.rb +4 -1
  120. data/lib/puppet/pops/adapters.rb +80 -12
  121. data/lib/puppet/pops/binder/binder.rb +21 -17
  122. data/lib/puppet/pops/binder/binder_issues.rb +8 -6
  123. data/lib/puppet/pops/binder/bindings_checker.rb +12 -8
  124. data/lib/puppet/pops/binder/bindings_composer.rb +16 -12
  125. data/lib/puppet/pops/binder/bindings_factory.rb +108 -104
  126. data/lib/puppet/pops/binder/bindings_model.rb +49 -47
  127. data/lib/puppet/pops/binder/config/diagnostic_producer.rb +10 -6
  128. data/lib/puppet/pops/binder/injector.rb +53 -48
  129. data/lib/puppet/pops/binder/key_factory.rb +10 -6
  130. data/lib/puppet/pops/binder/producers.rb +67 -62
  131. data/lib/puppet/pops/evaluator/access_operator.rb +98 -96
  132. data/lib/puppet/pops/evaluator/closure.rb +122 -106
  133. data/lib/puppet/pops/evaluator/collector_transformer.rb +34 -14
  134. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +0 -1
  135. data/lib/puppet/pops/evaluator/compare_operator.rb +13 -9
  136. data/lib/puppet/pops/evaluator/epp_evaluator.rb +9 -8
  137. data/lib/puppet/pops/evaluator/evaluator_impl.rb +78 -76
  138. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +85 -0
  139. data/lib/puppet/pops/evaluator/relationship_operator.rb +13 -11
  140. data/lib/puppet/pops/evaluator/runtime3_converter.rb +5 -0
  141. data/lib/puppet/pops/evaluator/runtime3_support.rb +47 -42
  142. data/lib/puppet/pops/functions/function.rb +6 -2
  143. data/lib/puppet/pops/issue_reporter.rb +6 -4
  144. data/lib/puppet/pops/issues.rb +50 -11
  145. data/lib/puppet/pops/loader/base_loader.rb +1 -1
  146. data/lib/puppet/pops/loader/loader.rb +1 -1
  147. data/lib/puppet/pops/loader/loader_paths.rb +15 -0
  148. data/lib/puppet/pops/loader/module_loaders.rb +17 -13
  149. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +18 -13
  150. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +16 -3
  151. data/lib/puppet/pops/loader/type_definition_instantiator.rb +55 -0
  152. data/lib/puppet/pops/loaders.rb +51 -9
  153. data/lib/puppet/pops/lookup/explainer.rb +73 -3
  154. data/lib/puppet/pops/lookup/invocation.rb +21 -19
  155. data/lib/puppet/pops/lookup.rb +17 -12
  156. data/lib/puppet/pops/merge_strategy.rb +16 -19
  157. data/lib/puppet/pops/model/factory.rb +179 -157
  158. data/lib/puppet/pops/model/model.rb +17 -8
  159. data/lib/puppet/pops/model/model_label_provider.rb +14 -7
  160. data/lib/puppet/pops/model/model_meta.rb +17 -0
  161. data/lib/puppet/pops/model/model_tree_dumper.rb +8 -0
  162. data/lib/puppet/pops/parser/egrammar.ra +38 -14
  163. data/lib/puppet/pops/parser/eparser.rb +1353 -1276
  164. data/lib/puppet/pops/parser/epp_support.rb +11 -7
  165. data/lib/puppet/pops/parser/evaluating_parser.rb +17 -13
  166. data/lib/puppet/pops/parser/heredoc_support.rb +15 -11
  167. data/lib/puppet/pops/parser/lexer2.rb +428 -403
  168. data/lib/puppet/pops/parser/lexer_support.rb +85 -7
  169. data/lib/puppet/pops/parser/locator.rb +21 -0
  170. data/lib/puppet/pops/parser/parser_support.rb +19 -16
  171. data/lib/puppet/pops/parser/slurp_support.rb +16 -8
  172. data/lib/puppet/pops/types/class_loader.rb +23 -19
  173. data/lib/puppet/pops/types/enumeration.rb +9 -26
  174. data/lib/puppet/pops/types/iterable.rb +308 -0
  175. data/lib/puppet/pops/types/recursion_guard.rb +82 -0
  176. data/lib/puppet/pops/types/type_acceptor.rb +25 -0
  177. data/lib/puppet/pops/types/type_asserter.rb +10 -9
  178. data/lib/puppet/pops/types/type_calculator.rb +140 -387
  179. data/lib/puppet/pops/types/type_factory.rb +91 -57
  180. data/lib/puppet/pops/types/type_formatter.rb +334 -0
  181. data/lib/puppet/pops/types/type_mismatch_describer.rb +226 -59
  182. data/lib/puppet/pops/types/type_parser.rb +159 -112
  183. data/lib/puppet/pops/types/types.rb +2057 -1253
  184. data/lib/puppet/pops/utils.rb +11 -10
  185. data/lib/puppet/pops/validation/checker4_0.rb +115 -63
  186. data/lib/puppet/pops/validation/validator_factory_4_0.rb +8 -4
  187. data/lib/puppet/pops/validation.rb +11 -9
  188. data/lib/puppet/pops.rb +0 -8
  189. data/lib/puppet/provider/aixobject.rb +1 -1
  190. data/lib/puppet/provider/augeas/augeas.rb +1 -1
  191. data/lib/puppet/provider/cron/crontab.rb +1 -1
  192. data/lib/puppet/provider/exec/windows.rb +1 -1
  193. data/lib/puppet/provider/group/windows_adsi.rb +2 -2
  194. data/lib/puppet/provider/macauthorization/macauthorization.rb +10 -9
  195. data/lib/puppet/provider/nameservice/directoryservice.rb +35 -50
  196. data/lib/puppet/provider/package/appdmg.rb +3 -2
  197. data/lib/puppet/provider/package/dnf.rb +1 -1
  198. data/lib/puppet/provider/package/pip.rb +16 -9
  199. data/lib/puppet/provider/package/pip3.rb +1 -1
  200. data/lib/puppet/provider/package/pkg.rb +1 -1
  201. data/lib/puppet/provider/package/pkgdmg.rb +3 -2
  202. data/lib/puppet/provider/package/pkgng.rb +13 -4
  203. data/lib/puppet/provider/package/rpm.rb +0 -1
  204. data/lib/puppet/provider/package/windows.rb +1 -1
  205. data/lib/puppet/provider/package/yum.rb +2 -2
  206. data/lib/puppet/provider/package/zypper.rb +19 -0
  207. data/lib/puppet/provider/service/debian.rb +7 -20
  208. data/lib/puppet/provider/service/init.rb +7 -0
  209. data/lib/puppet/provider/service/launchd.rb +6 -12
  210. data/lib/puppet/provider/service/systemd.rb +9 -2
  211. data/lib/puppet/provider/sshkey/parsed.rb +1 -1
  212. data/lib/puppet/provider/user/aix.rb +1 -1
  213. data/lib/puppet/provider/user/directoryservice.rb +33 -58
  214. data/lib/puppet/provider/user/windows_adsi.rb +2 -2
  215. data/lib/puppet/provider/yumrepo/inifile.rb +6 -3
  216. data/lib/puppet/provider/zfs/zfs.rb +1 -1
  217. data/lib/puppet/provider/zpool/zpool.rb +1 -1
  218. data/lib/puppet/reference/configuration.rb +1 -1
  219. data/lib/puppet/reference/providers.rb +1 -1
  220. data/lib/puppet/resource/capability_finder.rb +20 -13
  221. data/lib/puppet/resource/catalog.rb +60 -3
  222. data/lib/puppet/resource/status.rb +11 -2
  223. data/lib/puppet/resource/type.rb +33 -42
  224. data/lib/puppet/resource.rb +15 -12
  225. data/lib/puppet/settings/config_file.rb +1 -1
  226. data/lib/puppet/settings/environment_conf.rb +13 -5
  227. data/lib/puppet/settings.rb +1 -1
  228. data/lib/puppet/ssl/certificate_factory.rb +3 -3
  229. data/lib/puppet/ssl/certificate_request.rb +4 -4
  230. data/lib/puppet/ssl/certificate_signer.rb +1 -1
  231. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  232. data/lib/puppet/test/test_helper.rb +16 -4
  233. data/lib/puppet/transaction/additional_resource_generator.rb +23 -5
  234. data/lib/puppet/transaction/report.rb +31 -1
  235. data/lib/puppet/transaction/resource_harness.rb +0 -25
  236. data/lib/puppet/transaction.rb +15 -2
  237. data/lib/puppet/type/augeas.rb +1 -1
  238. data/lib/puppet/type/cron.rb +12 -12
  239. data/lib/puppet/type/file/checksum_value.rb +53 -0
  240. data/lib/puppet/type/file/content.rb +26 -111
  241. data/lib/puppet/type/file/data_sync.rb +84 -0
  242. data/lib/puppet/type/file/ensure.rb +17 -14
  243. data/lib/puppet/type/file/selcontext.rb +1 -1
  244. data/lib/puppet/type/file/source.rb +103 -18
  245. data/lib/puppet/type/file.rb +91 -39
  246. data/lib/puppet/type/filebucket.rb +1 -1
  247. data/lib/puppet/type/group.rb +6 -2
  248. data/lib/puppet/type/interface.rb +8 -3
  249. data/lib/puppet/type/macauthorization.rb +1 -1
  250. data/lib/puppet/type/package.rb +6 -0
  251. data/lib/puppet/type/schedule.rb +1 -1
  252. data/lib/puppet/type/stage.rb +1 -1
  253. data/lib/puppet/type/user.rb +19 -17
  254. data/lib/puppet/type/yumrepo.rb +20 -0
  255. data/lib/puppet/type.rb +11 -11
  256. data/lib/puppet/util/autoload.rb +16 -11
  257. data/lib/puppet/util/checksums.rb +74 -31
  258. data/lib/puppet/util/execution.rb +1 -1
  259. data/lib/puppet/util/http_proxy.rb +72 -0
  260. data/lib/puppet/util/log.rb +2 -0
  261. data/lib/puppet/util/logging.rb +43 -1
  262. data/lib/puppet/util/monkey_patches.rb +2 -2
  263. data/lib/puppet/util/multi_match.rb +51 -0
  264. data/lib/puppet/util/network_device/cisco/device.rb +10 -2
  265. data/lib/puppet/util/network_device/cisco/interface.rb +21 -8
  266. data/lib/puppet/util/network_device/transport/ssh.rb +7 -3
  267. data/lib/puppet/util/network_device/transport/telnet.rb +39 -36
  268. data/lib/puppet/util/plist.rb +130 -0
  269. data/lib/puppet/util/resource_template.rb +1 -1
  270. data/lib/puppet/util/run_mode.rb +2 -2
  271. data/lib/puppet/util/skip_tags.rb +9 -0
  272. data/lib/puppet/util/windows/access_control_entry.rb +1 -1
  273. data/lib/puppet/util/windows/access_control_list.rb +3 -3
  274. data/lib/puppet/util/windows/adsi.rb +65 -28
  275. data/lib/puppet/util/windows/api_types.rb +24 -18
  276. data/lib/puppet/util/windows/com.rb +3 -3
  277. data/lib/puppet/util/windows/error.rb +1 -1
  278. data/lib/puppet/util/windows/file.rb +8 -8
  279. data/lib/puppet/util/windows/principal.rb +190 -0
  280. data/lib/puppet/util/windows/process.rb +78 -11
  281. data/lib/puppet/util/windows/registry.rb +22 -16
  282. data/lib/puppet/util/windows/root_certs.rb +5 -5
  283. data/lib/puppet/util/windows/security.rb +33 -35
  284. data/lib/puppet/util/windows/security_descriptor.rb +1 -1
  285. data/lib/puppet/util/windows/sid.rb +84 -15
  286. data/lib/puppet/util/windows/taskscheduler.rb +15 -15
  287. data/lib/puppet/util/windows/user.rb +10 -10
  288. data/lib/puppet/util/windows.rb +4 -0
  289. data/lib/puppet/util.rb +109 -22
  290. data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +1 -1
  291. data/lib/puppet/vendor/pathspec/LICENSE +2 -2
  292. data/lib/puppet/vendor/pathspec/README.md +1 -1
  293. data/lib/puppet/vendor/rgen/README.rdoc +1 -1
  294. data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +14 -0
  295. data/lib/puppet/version.rb +1 -1
  296. data/lib/puppet.rb +17 -0
  297. data/lib/semver.rb +17 -1
  298. data/man/man5/puppet.conf.5 +12 -12
  299. data/man/man8/extlookup2hiera.8 +1 -1
  300. data/man/man8/puppet-agent.8 +2 -2
  301. data/man/man8/puppet-apply.8 +2 -2
  302. data/man/man8/puppet-ca.8 +2 -2
  303. data/man/man8/puppet-catalog.8 +2 -2
  304. data/man/man8/puppet-cert.8 +2 -2
  305. data/man/man8/puppet-certificate.8 +2 -2
  306. data/man/man8/puppet-certificate_request.8 +2 -2
  307. data/man/man8/puppet-certificate_revocation_list.8 +2 -2
  308. data/man/man8/puppet-config.8 +3 -3
  309. data/man/man8/puppet-describe.8 +1 -1
  310. data/man/man8/puppet-device.8 +1 -1
  311. data/man/man8/puppet-doc.8 +1 -1
  312. data/man/man8/puppet-epp.8 +2 -2
  313. data/man/man8/puppet-facts.8 +2 -2
  314. data/man/man8/puppet-file.8 +2 -2
  315. data/man/man8/puppet-filebucket.8 +2 -2
  316. data/man/man8/puppet-help.8 +2 -2
  317. data/man/man8/puppet-inspect.8 +2 -2
  318. data/man/man8/puppet-key.8 +2 -2
  319. data/man/man8/puppet-man.8 +2 -2
  320. data/man/man8/puppet-master.8 +2 -2
  321. data/man/man8/puppet-module.8 +9 -9
  322. data/man/man8/puppet-node.8 +2 -2
  323. data/man/man8/puppet-parser.8 +2 -2
  324. data/man/man8/puppet-plugin.8 +2 -2
  325. data/man/man8/puppet-report.8 +2 -2
  326. data/man/man8/puppet-resource.8 +2 -2
  327. data/man/man8/puppet-resource_type.8 +2 -2
  328. data/man/man8/puppet-status.8 +3 -3
  329. data/man/man8/puppet.8 +1 -1
  330. data/spec/fixtures/module.tar.gz +0 -0
  331. data/spec/fixtures/unit/application/environments/production/data/common.yaml +4 -0
  332. data/spec/fixtures/unit/application/environments/production/manifests/site.pp +1 -0
  333. data/spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf +1 -0
  334. data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/data.pp +10 -0
  335. data/spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp +1 -0
  336. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml +4 -0
  337. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml +4 -0
  338. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml +7 -0
  339. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml +4 -0
  340. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml +4 -0
  341. data/spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf +2 -0
  342. data/spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml +7 -0
  343. data/spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp +1 -0
  344. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml +6 -0
  345. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml +5 -0
  346. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp +2 -0
  347. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json +9 -0
  348. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +4 -0
  349. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml +5 -0
  350. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp +3 -0
  351. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json +9 -0
  352. data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +1 -0
  353. data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/manifests/init.pp +0 -1
  354. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/data/empty.json +0 -0
  355. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/hiera.yaml +5 -0
  356. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/manifests/init.pp +2 -0
  357. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/metadata.json +9 -0
  358. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/data/empty.yaml +1 -0
  359. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/hiera.yaml +5 -0
  360. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/manifests/init.pp +2 -0
  361. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/metadata.json +9 -0
  362. data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +2 -1
  363. data/spec/fixtures/unit/module/trailing-comma.json +1 -1
  364. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/functions/usee_puppet.pp +3 -0
  365. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb +6 -0
  366. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +8 -0
  367. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +1 -0
  368. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee2/lib/puppet/functions/usee2/callee.rb +5 -0
  369. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp +5 -0
  370. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp +5 -0
  371. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp +5 -0
  372. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb +5 -0
  373. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb +5 -0
  374. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb +5 -0
  375. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb +5 -0
  376. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +81 -0
  377. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/metadata.json +2 -1
  378. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +1 -0
  379. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +1 -0
  380. data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +187 -0
  381. data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +8 -0
  382. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +205 -0
  383. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +213 -0
  384. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +213 -0
  385. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +205 -0
  386. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +197 -0
  387. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +205 -0
  388. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +205 -0
  389. data/spec/integration/defaults_spec.rb +14 -2
  390. data/spec/integration/file_system/uniquefile_spec.rb +29 -0
  391. data/spec/integration/module_tool/tar/mini_spec.rb +28 -0
  392. data/spec/integration/node/environment_spec.rb +13 -0
  393. data/spec/integration/parser/collection_spec.rb +8 -0
  394. data/spec/integration/parser/dynamic_scoping_spec.rb +67 -0
  395. data/spec/integration/parser/parameter_defaults_spec.rb +336 -0
  396. data/spec/integration/parser/undef_param_spec.rb +8 -0
  397. data/spec/integration/provider/yumrepo_spec.rb +1 -1
  398. data/spec/integration/test/test_helper_spec.rb +28 -0
  399. data/spec/integration/transaction/report_spec.rb +16 -0
  400. data/spec/integration/transaction_spec.rb +11 -0
  401. data/spec/integration/type/file_spec.rb +194 -4
  402. data/spec/integration/type/package_spec.rb +5 -1
  403. data/spec/integration/type/tidy_spec.rb +21 -9
  404. data/spec/integration/util/execution_spec.rb +22 -0
  405. data/spec/integration/util/windows/principal_spec.rb +201 -0
  406. data/spec/integration/util/windows/process_spec.rb +31 -0
  407. data/spec/{unit → integration}/util/windows/registry_spec.rb +91 -1
  408. data/spec/integration/util/windows/security_spec.rb +8 -8
  409. data/spec/integration/util/windows/user_spec.rb +1 -1
  410. data/spec/integration/util_spec.rb +49 -27
  411. data/spec/lib/puppet_spec/compiler.rb +17 -0
  412. data/spec/lib/puppet_spec/files.rb +2 -2
  413. data/spec/lib/puppet_spec/pops.rb +13 -0
  414. data/spec/shared_behaviours/iterative_functions.rb +1 -1
  415. data/spec/shared_contexts/types_setup.rb +96 -0
  416. data/spec/unit/agent_spec.rb +1 -0
  417. data/spec/unit/application/agent_spec.rb +10 -0
  418. data/spec/unit/application/apply_spec.rb +9 -0
  419. data/spec/unit/application/lookup_spec.rb +138 -28
  420. data/spec/unit/configurer/downloader_spec.rb +5 -5
  421. data/spec/unit/configurer_spec.rb +271 -39
  422. data/spec/unit/data_providers/hiera_data_provider_spec.rb +182 -5
  423. data/spec/unit/data_providers/hiera_interpolation_spec.rb +57 -0
  424. data/spec/unit/defaults_spec.rb +15 -0
  425. data/spec/unit/environments_spec.rb +24 -4
  426. data/spec/unit/face/epp_face_spec.rb +2 -2
  427. data/spec/unit/face/parser_spec.rb +43 -2
  428. data/spec/unit/file_serving/http_metadata_spec.rb +85 -0
  429. data/spec/unit/file_serving/metadata_spec.rb +50 -0
  430. data/spec/unit/file_serving/terminus_selector_spec.rb +12 -2
  431. data/spec/unit/file_system_spec.rb +26 -0
  432. data/spec/unit/functions/assert_type_spec.rb +36 -2
  433. data/spec/unit/functions/defined_spec.rb +2 -2
  434. data/spec/unit/functions/epp_spec.rb +17 -9
  435. data/spec/unit/functions/inline_epp_spec.rb +4 -4
  436. data/spec/unit/functions/lookup_spec.rb +88 -16
  437. data/spec/unit/functions/regsubst_spec.rb +1 -1
  438. data/spec/unit/functions/reverse_each_spec.rb +108 -0
  439. data/spec/unit/functions/step_spec.rb +113 -0
  440. data/spec/unit/functions/type_spec.rb +35 -0
  441. data/spec/unit/functions4_spec.rb +62 -6
  442. data/spec/unit/hiera/scope_spec.rb +5 -2
  443. data/spec/unit/indirector/catalog/compiler_spec.rb +705 -4
  444. data/spec/unit/indirector/file_bucket_file/file_spec.rb +1 -1
  445. data/spec/unit/indirector/indirection_spec.rb +1 -1
  446. data/spec/unit/indirector/json_spec.rb +1 -1
  447. data/spec/unit/info_service_spec.rb +94 -32
  448. data/spec/unit/module_spec.rb +14 -0
  449. data/spec/unit/module_tool/applications/builder_spec.rb +4 -4
  450. data/spec/unit/network/authstore_spec.rb +1 -1
  451. data/spec/unit/network/http/connection_spec.rb +1 -0
  452. data/spec/unit/network/http/pool_spec.rb +30 -0
  453. data/spec/unit/node_spec.rb +8 -0
  454. data/spec/unit/parser/compiler_spec.rb +16 -18
  455. data/spec/unit/parser/scope_spec.rb +28 -11
  456. data/spec/unit/pops/evaluator/access_ops_spec.rb +7 -7
  457. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
  458. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -2
  459. data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +4 -4
  460. data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +63 -0
  461. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +6 -0
  462. data/spec/unit/pops/loaders/dependency_loader_spec.rb +53 -0
  463. data/spec/unit/pops/loaders/loaders_spec.rb +127 -2
  464. data/spec/unit/pops/parser/lexer2_spec.rb +118 -3
  465. data/spec/unit/pops/parser/parse_calls_spec.rb +8 -0
  466. data/spec/unit/pops/parser/parser_rspec_helper.rb +5 -0
  467. data/spec/unit/pops/parser/parser_spec.rb +10 -0
  468. data/spec/unit/pops/parser/source_pos_adapter_spec.rb +26 -0
  469. data/spec/unit/pops/types/iterable_spec.rb +262 -0
  470. data/spec/unit/pops/types/recursion_guard_spec.rb +91 -0
  471. data/spec/unit/pops/types/type_acceptor_spec.rb +105 -0
  472. data/spec/unit/pops/types/type_asserter_spec.rb +43 -0
  473. data/spec/unit/pops/types/type_calculator_spec.rb +275 -390
  474. data/spec/unit/pops/types/type_formatter_spec.rb +280 -0
  475. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +152 -0
  476. data/spec/unit/pops/types/type_parser_spec.rb +58 -13
  477. data/spec/unit/pops/types/types_spec.rb +241 -0
  478. data/spec/unit/pops/validator/validator_spec.rb +159 -15
  479. data/spec/unit/provider/cron/parsed_spec.rb +1 -0
  480. data/spec/unit/provider/group/windows_adsi_spec.rb +8 -8
  481. data/spec/unit/provider/macauthorization_spec.rb +5 -2
  482. data/spec/unit/provider/nameservice/directoryservice_spec.rb +14 -19
  483. data/spec/unit/provider/package/appdmg_spec.rb +3 -3
  484. data/spec/unit/provider/package/dnf_spec.rb +16 -0
  485. data/spec/unit/provider/package/pip3_spec.rb +60 -42
  486. data/spec/unit/provider/package/pip_spec.rb +88 -47
  487. data/spec/unit/provider/package/pkgdmg_spec.rb +18 -9
  488. data/spec/unit/provider/package/pkgng_spec.rb +4 -2
  489. data/spec/unit/provider/package/rpm_spec.rb +2 -25
  490. data/spec/unit/provider/package/yum_spec.rb +12 -1
  491. data/spec/unit/provider/package/zypper_spec.rb +14 -0
  492. data/spec/unit/provider/service/debian_spec.rb +6 -24
  493. data/spec/unit/provider/service/init_spec.rb +11 -1
  494. data/spec/unit/provider/service/launchd_spec.rb +18 -25
  495. data/spec/unit/provider/service/systemd_spec.rb +25 -12
  496. data/spec/unit/provider/service/upstart_spec.rb +57 -0
  497. data/spec/unit/provider/sshkey/parsed_spec.rb +20 -19
  498. data/spec/unit/provider/user/directoryservice_spec.rb +40 -59
  499. data/spec/unit/provider/user/windows_adsi_spec.rb +5 -5
  500. data/spec/unit/provider/yumrepo/inifile_spec.rb +16 -0
  501. data/spec/unit/resource/capability_finder_spec.rb +28 -15
  502. data/spec/unit/resource/catalog_spec.rb +33 -1
  503. data/spec/unit/resource/type_spec.rb +149 -7
  504. data/spec/unit/resource_spec.rb +99 -50
  505. data/spec/unit/settings/environment_conf_spec.rb +18 -1
  506. data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -3
  507. data/spec/unit/transaction/report_spec.rb +27 -0
  508. data/spec/unit/transaction/resource_harness_spec.rb +0 -47
  509. data/spec/unit/transaction_spec.rb +5 -0
  510. data/spec/unit/type/file/checksum_spec.rb +6 -0
  511. data/spec/unit/type/file/checksum_value_spec.rb +286 -0
  512. data/spec/unit/type/file/content_spec.rb +12 -193
  513. data/spec/unit/type/file/source_spec.rb +211 -119
  514. data/spec/unit/type/file_spec.rb +133 -34
  515. data/spec/unit/type/interface_spec.rb +32 -0
  516. data/spec/unit/type/macauthorization_spec.rb +4 -1
  517. data/spec/unit/type/yumrepo_spec.rb +2 -2
  518. data/spec/unit/util/filetype_spec.rb +1 -1
  519. data/spec/unit/util/http_proxy_spec.rb +2 -2
  520. data/spec/unit/util/log/destinations_spec.rb +0 -2
  521. data/spec/unit/util/logging_spec.rb +69 -0
  522. data/spec/unit/util/multi_match_spec.rb +39 -0
  523. data/spec/unit/util/network_device/cisco/device_spec.rb +253 -216
  524. data/spec/unit/util/network_device/transport/telnet_spec.rb +60 -58
  525. data/spec/unit/util/plist_spec.rb +110 -0
  526. data/spec/unit/util/resource_template_spec.rb +2 -2
  527. data/spec/unit/util/run_mode_spec.rb +27 -3
  528. data/spec/unit/util/windows/adsi_spec.rb +46 -38
  529. data/spec/unit/util/windows/api_types_spec.rb +42 -0
  530. data/spec/unit/util/windows/security_descriptor_spec.rb +3 -3
  531. data/spec/unit/util/windows/sid_spec.rb +48 -11
  532. data/spec/unit/util_spec.rb +123 -13
  533. data/tasks/cfpropertylist.rake +15 -0
  534. metadata +3342 -3195
  535. data/lib/puppet/vendor/load_plist.rb +0 -1
  536. data/lib/puppet/vendor/plist/CHANGELOG +0 -82
  537. data/lib/puppet/vendor/plist/MIT-LICENSE +0 -21
  538. data/lib/puppet/vendor/plist/PUPPET_README.md +0 -6
  539. data/lib/puppet/vendor/plist/README +0 -36
  540. data/lib/puppet/vendor/plist/Rakefile +0 -144
  541. data/lib/puppet/vendor/plist/docs/USAGE +0 -104
  542. data/lib/puppet/vendor/plist/docs/jamis-template.rb +0 -591
  543. data/lib/puppet/vendor/plist/lib/plist/generator.rb +0 -224
  544. data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
  545. data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
  546. data/lib/puppet/vendor/plist/test/assets/AlbumData.xml +0 -203
  547. data/lib/puppet/vendor/plist/test/assets/Cookies.plist +0 -104
  548. data/lib/puppet/vendor/plist/test/assets/commented.plist +0 -9
  549. data/lib/puppet/vendor/plist/test/assets/example_data.bin +0 -0
  550. data/lib/puppet/vendor/plist/test/assets/example_data.jpg +0 -0
  551. data/lib/puppet/vendor/plist/test/assets/example_data.plist +0 -259
  552. data/lib/puppet/vendor/plist/test/assets/test_data_elements.plist +0 -24
  553. data/lib/puppet/vendor/plist/test/assets/test_empty_key.plist +0 -13
  554. data/lib/puppet/vendor/plist/test/test_data_elements.rb +0 -115
  555. data/lib/puppet/vendor/plist/test/test_generator.rb +0 -59
  556. data/lib/puppet/vendor/plist/test/test_generator_basic_types.rb +0 -58
  557. data/lib/puppet/vendor/plist/test/test_generator_collections.rb +0 -82
  558. data/lib/puppet/vendor/plist/test/test_parser.rb +0 -90
  559. /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{usee → modules/usee}/lib/puppet/functions/usee/callee.rb +0 -0
  560. /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/lib/puppet/functions/user/caller.rb +0 -0
@@ -1,11 +1,15 @@
1
1
  require 'rgen/ecore/ecore'
2
+ require 'puppet/parser/scope'
2
3
  require 'puppet/pops/evaluator/compare_operator'
3
4
  require 'puppet/pops/evaluator/relationship_operator'
4
5
  require 'puppet/pops/evaluator/access_operator'
5
6
  require 'puppet/pops/evaluator/closure'
6
7
  require 'puppet/pops/evaluator/external_syntax_support'
8
+ require 'puppet/pops/types/iterable'
7
9
 
8
- # This implementation of {Puppet::Pops::Evaluator} performs evaluation using the puppet 3.x runtime system
10
+ module Puppet::Pops
11
+ module Evaluator
12
+ # This implementation of {Evaluator} performs evaluation using the puppet 3.x runtime system
9
13
  # in a manner largely compatible with Puppet 3.x, but adds new features and introduces constraints.
10
14
  #
11
15
  # The evaluation uses _polymorphic dispatch_ which works by dispatching to the first found method named after
@@ -18,17 +22,17 @@ require 'puppet/pops/evaluator/external_syntax_support'
18
22
  # either the actual class, or one of its super classes). The _scope_ parameter is always the scope in which
19
23
  # the evaluation takes place. If nothing else is mentioned, the return is always the result of evaluation.
20
24
  #
21
- # See {Puppet::Pops::Visitable} and {Puppet::Pops::Visitor} for more information about
25
+ # See {Visitable} and {Visitor} for more information about
22
26
  # polymorphic calling.
23
27
  #
24
- class Puppet::Pops::Evaluator::EvaluatorImpl
25
- include Puppet::Pops::Utils
28
+ class EvaluatorImpl
29
+ include Utils
26
30
 
27
31
  # Provides access to the Puppet 3.x runtime (scope, etc.)
28
32
  # This separation has been made to make it easier to later migrate the evaluator to an improved runtime.
29
33
  #
30
- include Puppet::Pops::Evaluator::Runtime3Support
31
- include Puppet::Pops::Evaluator::ExternalSyntaxSupport
34
+ include Runtime3Support
35
+ include ExternalSyntaxSupport
32
36
 
33
37
  EMPTY_STRING = ''.freeze
34
38
  COMMA_SEPARATOR = ', '.freeze
@@ -36,22 +40,22 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
36
40
  # Reference to Issues name space makes it easier to refer to issues
37
41
  # (Issues are shared with the validator).
38
42
  #
39
- Issues = Puppet::Pops::Issues
43
+ Issues = Issues
40
44
 
41
45
  def initialize
42
- @@eval_visitor ||= Puppet::Pops::Visitor.new(self, "eval", 1, 1)
43
- @@lvalue_visitor ||= Puppet::Pops::Visitor.new(self, "lvalue", 1, 1)
44
- @@assign_visitor ||= Puppet::Pops::Visitor.new(self, "assign", 3, 3)
45
- @@string_visitor ||= Puppet::Pops::Visitor.new(self, "string", 1, 1)
46
+ @@eval_visitor ||= Visitor.new(self, "eval", 1, 1)
47
+ @@lvalue_visitor ||= Visitor.new(self, "lvalue", 1, 1)
48
+ @@assign_visitor ||= Visitor.new(self, "assign", 3, 3)
49
+ @@string_visitor ||= Visitor.new(self, "string", 1, 1)
46
50
 
47
- @@type_calculator ||= Puppet::Pops::Types::TypeCalculator.new()
48
- @@type_parser ||= Puppet::Pops::Types::TypeParser.new()
51
+ @@type_calculator ||= Types::TypeCalculator.new()
52
+ @@type_parser ||= Types::TypeParser.new()
49
53
 
50
- @@compare_operator ||= Puppet::Pops::Evaluator::CompareOperator.new()
51
- @@relationship_operator ||= Puppet::Pops::Evaluator::RelationshipOperator.new()
54
+ @@compare_operator ||= CompareOperator.new()
55
+ @@relationship_operator ||= RelationshipOperator.new()
52
56
 
53
57
  # Use null migration checker unless given in context
54
- @migration_checker = (Puppet.lookup(:migration_checker) { Puppet::Pops::Migration::MigrationChecker.new() })
58
+ @migration_checker = (Puppet.lookup(:migration_checker) { Migration::MigrationChecker.new() })
55
59
  end
56
60
 
57
61
  # @api private
@@ -72,7 +76,7 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
72
76
  begin
73
77
  @@eval_visitor.visit_this_1(self, target, scope)
74
78
 
75
- rescue Puppet::Pops::SemanticError => e
79
+ rescue SemanticError => e
76
80
  # A raised issue may not know the semantic target, use errors call stack, but fill in the
77
81
  # rest from a supplied semantic object, or the target instruction if there is not semantic
78
82
  # object.
@@ -119,7 +123,7 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
119
123
  #
120
124
  # @param target [Object] assignment target - see methods on the pattern assign_TYPE for actual supported types.
121
125
  # @param value [Object] the value to assign to `target`
122
- # @param o [Puppet::Pops::Model::PopsObject] originating instruction
126
+ # @param o [Model::PopsObject] originating instruction
123
127
  # @param scope [Object] the runtime specific scope where evaluation should take place
124
128
  #
125
129
  # @api private
@@ -153,12 +157,12 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
153
157
  #
154
158
  # @param scope [Puppet::Parser::Scope] the parent scope
155
159
  # @param variable_bindings [Hash{String => Object}] the variable names and values to bind (names are keys, bound values are values)
156
- # @param block [Puppet::Pops::Model::BlockExpression] the sequence of expressions to evaluate in the new scope
160
+ # @param block [Model::BlockExpression] the sequence of expressions to evaluate in the new scope
157
161
  #
158
162
  # @api private
159
163
  #
160
164
  def evaluate_block_with_bindings(scope, variable_bindings, block_expr)
161
- with_guarded_scope(scope) do
165
+ scope.with_guarded_scope do
162
166
  # change to create local scope_from - cannot give it file and line -
163
167
  # that is the place of the call, not "here"
164
168
  create_local_scope_from(variable_bindings, scope)
@@ -190,7 +194,7 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
190
194
  # $name = value
191
195
  # @param name [String] name of variable without $
192
196
  # @param value [Object] value to assign to the variable
193
- # @param o [Puppet::Pops::Model::PopsObject] originating instruction
197
+ # @param o [Model::PopsObject] originating instruction
194
198
  # @param scope [Object] the runtime specific scope where evaluation should take place
195
199
  # @return [value<Object>]
196
200
  #
@@ -257,7 +261,7 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
257
261
  #
258
262
  def eval_ReservedWord(o, scope)
259
263
  if !o.future
260
- fail(Puppet::Pops::Issues::RESERVED_WORD, o, {:word => o.word})
264
+ fail(Issues::RESERVED_WORD, o, {:word => o.word})
261
265
  else
262
266
  o.word
263
267
  end
@@ -274,7 +278,7 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
274
278
  # A QualifiedReference (i.e. a capitalized qualified name such as Foo, or Foo::Bar) evaluates to a PType
275
279
  #
276
280
  def eval_QualifiedReference(o, scope)
277
- @@type_parser.interpret(o)
281
+ @@type_parser.interpret(o, scope)
278
282
  end
279
283
 
280
284
  def eval_NotExpression(o, scope)
@@ -294,6 +298,8 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
294
298
  candidate
295
299
  when Hash
296
300
  candidate.to_a
301
+ when Puppet::Pops::Types::Iterator
302
+ candidate.to_a
297
303
  else
298
304
  # turns anything else into an array (so result can be unfolded)
299
305
  [candidate]
@@ -419,7 +425,7 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
419
425
  def eval_AccessExpression(o, scope)
420
426
  left = evaluate(o.left_expr, scope)
421
427
  keys = o.keys.nil? ? [] : o.keys.collect {|key| evaluate(key, scope) }
422
- Puppet::Pops::Evaluator::AccessOperator.new(o).access(left, scope, *keys)
428
+ AccessOperator.new(o).access(left, scope, *keys)
423
429
  end
424
430
 
425
431
  # Evaluates <, <=, >, >=, and ==
@@ -430,7 +436,7 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
430
436
 
431
437
  begin
432
438
  # Left is a type
433
- if left.is_a?(Puppet::Pops::Types::PAnyType)
439
+ if left.is_a?(Types::PAnyType)
434
440
  case o.operator
435
441
  when :'=='
436
442
  @@type_calculator.equals(left,right)
@@ -503,7 +509,7 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
503
509
  pattern = evaluate(o.right_expr, scope)
504
510
 
505
511
  # matches RHS types as instance of for all types except a parameterized Regexp[R]
506
- if pattern.is_a?(Puppet::Pops::Types::PAnyType)
512
+ if pattern.is_a?(Types::PAnyType)
507
513
  # evaluate as instance? of type check
508
514
  matched = @@type_calculator.instance?(pattern, left)
509
515
  # convert match result to Boolean true, or false
@@ -584,7 +590,7 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
584
590
  # memo scope level before evaluating test - don't want a match in the case test to leak $n match vars
585
591
  # to expressions after the case expression.
586
592
  #
587
- with_guarded_scope(scope) do
593
+ scope.with_guarded_scope do
588
594
  test = evaluate(o.test, scope)
589
595
 
590
596
  result = nil
@@ -594,10 +600,10 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
594
600
  if co.values.find do |c|
595
601
  c = unwind_parentheses(c)
596
602
  case c
597
- when Puppet::Pops::Model::LiteralDefault
603
+ when Model::LiteralDefault
598
604
  the_default = co.then_expr
599
605
  next false
600
- when Puppet::Pops::Model::UnfoldExpression
606
+ when Model::UnfoldExpression
601
607
  # not ideal for error reporting, since it is not known which unfolded result
602
608
  # that caused an error - the entire unfold expression is blamed (i.e. the var c, passed to is_match?)
603
609
  evaluate(c, scope).any? {|v| is_match?(test, v, c, co, scope) }
@@ -621,7 +627,10 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
621
627
  # to the compiler to collect the resources specified by the query.
622
628
  #
623
629
  def eval_CollectExpression o, scope
624
- Puppet::Pops::Evaluator::CollectorTransformer.new().transform(o,scope)
630
+ if o.query.is_a?(Model::ExportedQuery)
631
+ optionally_fail(Issues::RT_NO_STORECONFIGS, o);
632
+ end
633
+ CollectorTransformer.new().transform(o,scope)
625
634
  end
626
635
 
627
636
  def eval_ParenthesizedExpression(o, scope)
@@ -652,47 +661,47 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
652
661
 
653
662
  # Get the type name
654
663
  type_name =
655
- if (tmp_name = o.type_name).is_a?(Puppet::Pops::Model::QualifiedName)
664
+ if (tmp_name = o.type_name).is_a?(Model::QualifiedName)
656
665
  tmp_name.value # already validated as a name
657
666
  else
658
667
  type_name_acceptable =
659
668
  case o.type_name
660
- when Puppet::Pops::Model::QualifiedReference
669
+ when Model::QualifiedReference
661
670
  true
662
- when Puppet::Pops::Model::AccessExpression
663
- o.type_name.left_expr.is_a?(Puppet::Pops::Model::QualifiedReference)
671
+ when Model::AccessExpression
672
+ o.type_name.left_expr.is_a?(Model::QualifiedReference)
664
673
  end
665
674
 
666
675
  evaluated_name = evaluate(tmp_name, scope)
667
676
  unless type_name_acceptable
668
677
  actual = type_calculator.generalize(type_calculator.infer(evaluated_name)).to_s
669
- fail(Puppet::Pops::Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, {:actual => actual})
678
+ fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, {:actual => actual})
670
679
  end
671
680
 
672
681
  # must be a CatalogEntry subtype
673
682
  case evaluated_name
674
- when Puppet::Pops::Types::PHostClassType
683
+ when Types::PHostClassType
675
684
  unless evaluated_name.class_name.nil?
676
- fail(Puppet::Pops::Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, {:actual=> evaluated_name.to_s})
685
+ fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, {:actual=> evaluated_name.to_s})
677
686
  end
678
687
  'class'
679
688
 
680
- when Puppet::Pops::Types::PResourceType
689
+ when Types::PResourceType
681
690
  unless evaluated_name.title().nil?
682
- fail(Puppet::Pops::Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, {:actual=> evaluated_name.to_s})
691
+ fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, {:actual=> evaluated_name.to_s})
683
692
  end
684
693
  evaluated_name.type_name # assume validated
685
694
 
686
695
  else
687
696
  actual = type_calculator.generalize(type_calculator.infer(evaluated_name)).to_s
688
- fail(Puppet::Pops::Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, {:actual=>actual})
697
+ fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, {:actual=>actual})
689
698
  end
690
699
  end
691
700
 
692
701
  # This is a runtime check - the model is valid, but will have runtime issues when evaluated
693
702
  # and storeconfigs is not set.
694
703
  if(o.exported)
695
- optionally_fail(Puppet::Pops::Issues::RT_NO_STORECONFIGS_EXPORT, o);
704
+ optionally_fail(Issues::RT_NO_STORECONFIGS_EXPORT, o);
696
705
  end
697
706
 
698
707
  titles_to_body = {}
@@ -710,24 +719,24 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
710
719
  # There may be a :default entry, its entries apply with lower precedence
711
720
  #
712
721
  if titles.nil?
713
- fail(Puppet::Pops::Issues::MISSING_TITLE, body.title)
722
+ fail(Issues::MISSING_TITLE, body.title)
714
723
  end
715
724
  titles = [titles].flatten
716
725
 
717
726
  # Check types of evaluated titles and duplicate entries
718
727
  titles.each_with_index do |title, index|
719
728
  if title.nil?
720
- fail(Puppet::Pops::Issues::MISSING_TITLE_AT, body.title, {:index => index})
729
+ fail(Issues::MISSING_TITLE_AT, body.title, {:index => index})
721
730
 
722
731
  elsif !title.is_a?(String) && title != :default
723
732
  actual = type_calculator.generalize(type_calculator.infer(title)).to_s
724
- fail(Puppet::Pops::Issues::ILLEGAL_TITLE_TYPE_AT, body.title, {:index => index, :actual => actual})
733
+ fail(Issues::ILLEGAL_TITLE_TYPE_AT, body.title, {:index => index, :actual => actual})
725
734
 
726
735
  elsif title == EMPTY_STRING
727
- fail(Puppet::Pops::Issues::EMPTY_STRING_TITLE_AT, body.title, {:index => index})
736
+ fail(Issues::EMPTY_STRING_TITLE_AT, body.title, {:index => index})
728
737
 
729
738
  elsif titles_to_body[title]
730
- fail(Puppet::Pops::Issues::DUPLICATE_TITLE, o, {:title => title})
739
+ fail(Issues::DUPLICATE_TITLE, o, {:title => title})
731
740
  end
732
741
  titles_to_body[title] = body
733
742
  end
@@ -744,7 +753,7 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
744
753
  params = [params] unless params.is_a?(Array)
745
754
  params.each do |p|
746
755
  if param_memo.include? p.name
747
- fail(Puppet::Pops::Issues::DUPLICATE_ATTRIBUTE, o, {:attribute => p.name})
756
+ fail(Issues::DUPLICATE_ATTRIBUTE, o, {:attribute => p.name})
748
757
  end
749
758
  param_memo[p.name] = p
750
759
  end
@@ -780,7 +789,7 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
780
789
  hashed_params = evaluate(o.expr, scope)
781
790
  unless hashed_params.is_a?(Hash)
782
791
  actual = type_calculator.generalize(type_calculator.infer(hashed_params)).to_s
783
- fail(Puppet::Pops::Issues::TYPE_MISMATCH, o.expr, {:expected => 'Hash', :actual => actual})
792
+ fail(Issues::TYPE_MISMATCH, o.expr, {:expected => 'Hash', :actual => actual})
784
793
  end
785
794
  hashed_params.map { |k,v| create_resource_parameter(o, scope, k, v, :'=>') }
786
795
  end
@@ -790,7 +799,7 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
790
799
  def eval_ResourceDefaultsExpression(o, scope)
791
800
  type = evaluate(o.type_ref, scope)
792
801
  type_name =
793
- if type.is_a?(Puppet::Pops::Types::PResourceType) && !type.type_name.nil? && type.title.nil?
802
+ if type.is_a?(Types::PResourceType) && !type.type_name.nil? && type.title.nil?
794
803
  type.type_name # assume it is a valid name
795
804
  else
796
805
  actual = type_calculator.generalize(type_calculator.infer(type))
@@ -808,9 +817,9 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
808
817
  # The functor expression is not evaluated, it is not possible to select the function to call
809
818
  # via an expression like $a()
810
819
  case o.functor_expr
811
- when Puppet::Pops::Model::QualifiedName
820
+ when Model::QualifiedName
812
821
  # ok
813
- when Puppet::Pops::Model::RenderStringExpression
822
+ when Model::RenderStringExpression
814
823
  # helpful to point out this easy to make Epp error
815
824
  fail(Issues::ILLEGAL_EPP_PARAMETERS, o)
816
825
  else
@@ -823,12 +832,12 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
823
832
  # Evaluation of CallMethodExpression handles a NamedAccessExpression functor (receiver.function_name)
824
833
  #
825
834
  def eval_CallMethodExpression(o, scope)
826
- unless o.functor_expr.is_a? Puppet::Pops::Model::NamedAccessExpression
835
+ unless o.functor_expr.is_a? Model::NamedAccessExpression
827
836
  fail(Issues::ILLEGAL_EXPRESSION, o.functor_expr, {:feature=>'function accessor', :container => o})
828
837
  end
829
838
  receiver = unfold([], [o.functor_expr.left_expr], scope)
830
839
  name = o.functor_expr.right_expr
831
- unless name.is_a? Puppet::Pops::Model::QualifiedName
840
+ unless name.is_a? Model::QualifiedName
832
841
  fail(Issues::ILLEGAL_EXPRESSION, o.functor_expr, {:feature=>'function name', :container => o})
833
842
  end
834
843
  name = name.value # the string function name
@@ -839,8 +848,8 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
839
848
  if o.lambda.nil?
840
849
  call_function(name, evaluated_arguments, o, scope)
841
850
  else
842
- closure = Puppet::Pops::Evaluator::Closure.new(self, o.lambda, scope)
843
- call_function(name, evaluated_arguments, o, scope, &Puppet::Pops::Evaluator::PuppetProc.new(closure) { |*args| closure.call(*args) })
851
+ closure = Closure.new(self, o.lambda, scope)
852
+ call_function(name, evaluated_arguments, o, scope, &PuppetProc.new(closure) { |*args| closure.call(*args) })
844
853
  end
845
854
  end
846
855
  private :call_function_with_block
@@ -852,17 +861,17 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
852
861
  # memo scope level before evaluating test - don't want a match in the case test to leak $n match vars
853
862
  # to expressions after the selector expression.
854
863
  #
855
- with_guarded_scope(scope) do
864
+ scope.with_guarded_scope do
856
865
  test = evaluate(o.left_expr, scope)
857
866
 
858
867
  the_default = nil
859
868
  selected = o.selectors.find do |s|
860
869
  me = unwind_parentheses(s.matching_expr)
861
870
  case me
862
- when Puppet::Pops::Model::LiteralDefault
871
+ when Model::LiteralDefault
863
872
  the_default = s.value_expr
864
873
  false
865
- when Puppet::Pops::Model::UnfoldExpression
874
+ when Model::UnfoldExpression
866
875
  # not ideal for error reporting, since it is not known which unfolded result
867
876
  # that caused an error - the entire unfold expression is blamed (i.e. the var c, passed to is_match?)
868
877
  evaluate(me, scope).any? {|v| is_match?(test, v, me, s, scope) }
@@ -894,7 +903,7 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
894
903
 
895
904
  # Evaluates Puppet DSL `if`
896
905
  def eval_IfExpression o, scope
897
- with_guarded_scope(scope) do
906
+ scope.with_guarded_scope do
898
907
  if is_true?(evaluate(o.test, scope), o.test)
899
908
  evaluate(o.then_expr, scope)
900
909
  else
@@ -905,7 +914,7 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
905
914
 
906
915
  # Evaluates Puppet DSL `unless`
907
916
  def eval_UnlessExpression o, scope
908
- with_guarded_scope(scope) do
917
+ scope.with_guarded_scope do
909
918
  unless is_true?(evaluate(o.test, scope), o.test)
910
919
  evaluate(o.then_expr, scope)
911
920
  else
@@ -953,7 +962,7 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
953
962
  # @return [String] the interpolated result
954
963
  #
955
964
  def eval_TextExpression o, scope
956
- if o.expr.is_a?(Puppet::Pops::Model::QualifiedName)
965
+ if o.expr.is_a?(Model::QualifiedName)
957
966
  string(get_variable_value(o.expr.value, o, scope), scope)
958
967
  else
959
968
  string(evaluate(o.expr, scope), scope)
@@ -985,7 +994,7 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
985
994
  end
986
995
 
987
996
  def string_PAnyType(o, scope)
988
- @@type_calculator.string(o)
997
+ o.to_s
989
998
  end
990
999
 
991
1000
  # Produces concatenation / merge of x and y.
@@ -1057,7 +1066,7 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
1057
1066
  # Use type calcultor to determine if array is Array[Array[?]], and if so use second form
1058
1067
  # of call
1059
1068
  t = @@type_calculator.infer(y)
1060
- if t.element_type.is_a? Puppet::Pops::Types::PArrayType
1069
+ if t.element_type.is_a? Types::PArrayType
1061
1070
  Hash[y]
1062
1071
  else
1063
1072
  Hash[*y]
@@ -1113,7 +1122,7 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
1113
1122
  matched = right.match(left)
1114
1123
  set_match_data(matched, scope) # creates or clears ephemeral
1115
1124
  !!matched # convert to boolean
1116
- elsif right.is_a?(Puppet::Pops::Types::PAnyType)
1125
+ elsif right.is_a?(Types::PAnyType)
1117
1126
  # right is a type and left is not - check if left is an instance of the given type
1118
1127
  # (The reverse is not terribly meaningful - computing which of the case options that first produces
1119
1128
  # an instance of a given type).
@@ -1126,26 +1135,17 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
1126
1135
  @@compare_operator.match(left, right, scope)
1127
1136
  end
1128
1137
 
1129
- def with_guarded_scope(scope)
1130
- scope_memo = get_scope_nesting_level(scope)
1131
- begin
1132
- yield
1133
- ensure
1134
- set_scope_nesting_level(scope, scope_memo)
1135
- end
1136
- end
1137
-
1138
1138
  # Maps the expression in the given array to their product except for UnfoldExpressions which are first unfolded.
1139
1139
  # The result is added to the given result Array.
1140
1140
  # @param result [Array] Where to add the result (may contain information to add to)
1141
- # @param array [Array[Puppet::Pops::Model::Expression] the expressions to map
1141
+ # @param array [Array[Model::Expression] the expressions to map
1142
1142
  # @param scope [Puppet::Parser::Scope] the scope to evaluate in
1143
1143
  # @return [Array] the given result array with content added from the operation
1144
1144
  #
1145
1145
  def unfold(result, array, scope)
1146
1146
  array.each do |x|
1147
1147
  x = unwind_parentheses(x)
1148
- if x.is_a?(Puppet::Pops::Model::UnfoldExpression)
1148
+ if x.is_a?(Model::UnfoldExpression)
1149
1149
  result.concat(evaluate(x, scope))
1150
1150
  else
1151
1151
  result << evaluate(x, scope)
@@ -1156,8 +1156,10 @@ class Puppet::Pops::Evaluator::EvaluatorImpl
1156
1156
  private :unfold
1157
1157
 
1158
1158
  def unwind_parentheses(o)
1159
- return o unless o.is_a?(Puppet::Pops::Model::ParenthesizedExpression)
1159
+ return o unless o.is_a?(Model::ParenthesizedExpression)
1160
1160
  unwind_parentheses(o.expr)
1161
1161
  end
1162
1162
  private :unwind_parentheses
1163
1163
  end
1164
+ end
1165
+ end
@@ -0,0 +1,85 @@
1
+ require 'rgen/ecore/ecore'
2
+
3
+ # Literal values for
4
+ #
5
+ # * String
6
+ # * Numbers
7
+ # * Booleans
8
+ # * Undef (produces nil)
9
+ # * Array
10
+ # * Hash where keys must be Strings
11
+ # * QualifiedName
12
+ #
13
+ # Not considered literal:
14
+ #
15
+ # * QualifiedReference # i.e. File, FooBar
16
+ # * Default is not accepted as being literal
17
+ # * Regular Expression is not accepted as being literal
18
+ # * Hash with non String keys
19
+ # * String with interpolatin
20
+ #
21
+ class Puppet::Pops::Evaluator::JsonStrictLiteralEvaluator
22
+ #include Puppet::Pops::Utils
23
+
24
+ EMPTY_STRING = ''.freeze
25
+ COMMA_SEPARATOR = ', '.freeze
26
+
27
+ def initialize
28
+ @@literal_visitor ||= Puppet::Pops::Visitor.new(self, "literal", 0, 0)
29
+ end
30
+
31
+ def literal(ast)
32
+ @@literal_visitor.visit_this_0(self, ast)
33
+ end
34
+
35
+ def literal_Object(o)
36
+ throw :not_literal
37
+ end
38
+
39
+ def literal_Factory(o)
40
+ literal(o.model)
41
+ end
42
+
43
+ def literal_Program(o)
44
+ literal(o.body)
45
+ end
46
+
47
+ def literal_LiteralString(o)
48
+ o.value
49
+ end
50
+
51
+ def literal_QualifiedName(o)
52
+ o.value
53
+ end
54
+
55
+ def literal_LiteralNumber(o)
56
+ o.value
57
+ end
58
+
59
+ def literal_LiteralBoolean(o)
60
+ o.value
61
+ end
62
+
63
+ def literal_LiteralUndef(o)
64
+ nil
65
+ end
66
+
67
+ def literal_ConcatenatedString(o)
68
+ # use double quoted string value if there is no interpolation
69
+ throw :not_literal unless o.segments.size == 1 && o.segments[0].is_a?(Puppet::Pops::Model::LiteralString)
70
+ o.segments[0].value
71
+ end
72
+
73
+ def literal_LiteralList(o)
74
+ o.values.map {|v| literal(v) }
75
+ end
76
+
77
+ def literal_LiteralHash(o)
78
+ o.entries.reduce({}) do |result, entry|
79
+ key = literal(entry.key)
80
+ throw :not_literal unless key.is_a?(String)
81
+ result[key] = literal(entry.value)
82
+ result
83
+ end
84
+ end
85
+ end
@@ -1,3 +1,5 @@
1
+ module Puppet::Pops
2
+ module Evaluator
1
3
  # The RelationshipOperator implements the semantics of the -> <- ~> <~ operators creating relationships or notification
2
4
  # relationships between the left and right hand side's references to resources.
3
5
  #
@@ -6,14 +8,12 @@
6
8
  # This is done to separate the concerns of the new evaluator from the 3x runtime; messy logic goes into the runtime support
7
9
  # module. Later when more is cleaned up this can be simplified further.
8
10
  #
9
- class Puppet::Pops::Evaluator::RelationshipOperator
11
+ class RelationshipOperator
10
12
 
11
13
  # Provides access to the Puppet 3.x runtime (scope, etc.)
12
14
  # This separation has been made to make it easier to later migrate the evaluator to an improved runtime.
13
15
  #
14
- include Puppet::Pops::Evaluator::Runtime3Support
15
-
16
- Issues = Puppet::Pops::Issues
16
+ include Runtime3Support
17
17
 
18
18
  class IllegalRelationshipOperandError < RuntimeError
19
19
  attr_reader :operand
@@ -30,11 +30,11 @@ class Puppet::Pops::Evaluator::RelationshipOperator
30
30
  end
31
31
 
32
32
  def initialize
33
- @type_transformer_visitor = Puppet::Pops::Visitor.new(self, "transform", 1, 1)
34
- @type_calculator = Puppet::Pops::Types::TypeCalculator.new()
35
- @type_parser = Puppet::Pops::Types::TypeParser.new()
33
+ @type_transformer_visitor = Visitor.new(self, "transform", 1, 1)
34
+ @type_calculator = Types::TypeCalculator.new()
35
+ @type_parser = Types::TypeParser.new()
36
36
 
37
- tf = Puppet::Pops::Types::TypeFactory
37
+ tf = Types::TypeFactory
38
38
  @catalog_type = tf.variant(tf.catalog_entry, tf.type_type(tf.catalog_entry))
39
39
  end
40
40
 
@@ -51,19 +51,19 @@ class Puppet::Pops::Evaluator::RelationshipOperator
51
51
  # A Resource is by definition a Catalog type, but of 3.x type
52
52
  # @api private
53
53
  def transform_Resource(o, scope)
54
- Puppet::Pops::Types::TypeFactory.resource(o.type, o.title)
54
+ Types::TypeFactory.resource(o.type, o.title)
55
55
  end
56
56
 
57
57
  # A string must be a type reference in string format
58
58
  # @api private
59
59
  def transform_String(o, scope)
60
- assert_catalog_type(@type_parser.parse(o), scope)
60
+ assert_catalog_type(@type_parser.parse(o, scope), scope)
61
61
  end
62
62
 
63
63
  # A qualified name is short hand for a class with this name
64
64
  # @api private
65
65
  def transform_QualifiedName(o, scope)
66
- Puppet::Pops::Types::TypeFactory.host_class(o.value)
66
+ Types::TypeFactory.host_class(o.value)
67
67
  end
68
68
 
69
69
  # Types are what they are, just check the type
@@ -165,3 +165,5 @@ class Puppet::Pops::Evaluator::RelationshipOperator
165
165
  REVERSE_OPERATORS.include?(o.operator)
166
166
  end
167
167
  end
168
+ end
169
+ end
@@ -88,6 +88,11 @@ class Runtime3Converter
88
88
  end
89
89
  alias :convert2_Hash :convert_Hash
90
90
 
91
+ def convert_Iterator(o, scope, undef_value)
92
+ raise Puppet::Error, 'Use of an Iterator is not supported here'
93
+ end
94
+ alias :convert2_Iterator :convert_Iterator
95
+
91
96
  def convert_Regexp(o, scope, undef_value)
92
97
  # Puppet 3x cannot handle parameter values that are reqular expressions. Turn into regexp string in
93
98
  # source form