puppet 4.3.2 → 4.4.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 (487) hide show
  1. checksums.yaml +4 -4
  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/debian/README.source +1 -1
  9. data/ext/debian/control +1 -1
  10. data/ext/debian/copyright +4 -4
  11. data/ext/debian/puppetmaster.README.debian +11 -9
  12. data/ext/emacs/puppet-mode.el +1 -1
  13. data/ext/envpuppet +2 -2
  14. data/ext/ips/puppetagent.xml +1 -1
  15. data/ext/ips/puppetmaster.xml +1 -1
  16. data/ext/project_data.yaml +8 -0
  17. data/ext/puppet-test +3 -3
  18. data/ext/rack/example-passenger-vhost.conf +1 -1
  19. data/ext/redhat/puppet.spec.erb +2 -2
  20. data/ext/regexp_nodes/regexp_nodes.rb +1 -1
  21. data/ext/solaris/pkginfo +1 -1
  22. data/ext/solaris/smf/puppet.xml +1 -1
  23. data/ext/suse/puppet.spec +2 -2
  24. data/ext/upload_facts.rb +1 -1
  25. data/ext/windows/puppet_interactive.bat +6 -0
  26. data/ext/windows/puppet_shell.bat +9 -0
  27. data/ext/windows/run_puppet_interactive.bat +9 -0
  28. data/ext/yaml_nodes.rb +1 -1
  29. data/install.rb +30 -20
  30. data/lib/puppet/agent.rb +1 -1
  31. data/lib/puppet/application/agent.rb +4 -2
  32. data/lib/puppet/application/apply.rb +7 -4
  33. data/lib/puppet/application/cert.rb +1 -1
  34. data/lib/puppet/application/device.rb +1 -1
  35. data/lib/puppet/application/filebucket.rb +1 -1
  36. data/lib/puppet/application/inspect.rb +1 -1
  37. data/lib/puppet/application/lookup.rb +4 -4
  38. data/lib/puppet/application/master.rb +2 -2
  39. data/lib/puppet/application/resource.rb +1 -1
  40. data/lib/puppet/configurer.rb +100 -22
  41. data/lib/puppet/data_providers/hiera_config.rb +28 -3
  42. data/lib/puppet/data_providers/hiera_interpolate.rb +30 -15
  43. data/lib/puppet/data_providers/hiera_support.rb +1 -1
  44. data/lib/puppet/data_providers/json_data_provider_factory.rb +2 -2
  45. data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -2
  46. data/lib/puppet/defaults.rb +65 -19
  47. data/lib/puppet/environments.rb +3 -1
  48. data/lib/puppet/face/config.rb +1 -1
  49. data/lib/puppet/face/epp.rb +1 -1
  50. data/lib/puppet/face/help/man.erb +1 -1
  51. data/lib/puppet/face/module/install.rb +6 -6
  52. data/lib/puppet/face/parser.rb +12 -9
  53. data/lib/puppet/face/status.rb +2 -1
  54. data/lib/puppet/feature/cfpropertylist.rb +3 -0
  55. data/lib/puppet/feature/telnet.rb +9 -0
  56. data/lib/puppet/file_serving/http_metadata.rb +46 -0
  57. data/lib/puppet/file_serving/metadata.rb +18 -2
  58. data/lib/puppet/file_serving/terminus_selector.rb +2 -0
  59. data/lib/puppet/file_system.rb +2 -2
  60. data/lib/puppet/file_system/file_impl.rb +2 -2
  61. data/lib/puppet/file_system/memory_impl.rb +1 -1
  62. data/lib/puppet/file_system/uniquefile.rb +1 -1
  63. data/lib/puppet/forge.rb +1 -1
  64. data/lib/puppet/forge/repository.rb +1 -31
  65. data/lib/puppet/functions.rb +45 -6
  66. data/lib/puppet/functions/assert_type.rb +9 -9
  67. data/lib/puppet/functions/each.rb +5 -13
  68. data/lib/puppet/functions/filter.rb +5 -14
  69. data/lib/puppet/functions/map.rb +6 -14
  70. data/lib/puppet/functions/reduce.rb +5 -13
  71. data/lib/puppet/functions/reverse_each.rb +82 -0
  72. data/lib/puppet/functions/scanf.rb +15 -18
  73. data/lib/puppet/functions/slice.rb +22 -36
  74. data/lib/puppet/functions/split.rb +2 -2
  75. data/lib/puppet/functions/step.rb +88 -0
  76. data/lib/puppet/functions/type.rb +70 -0
  77. data/lib/puppet/graph/rb_tree_map.rb +1 -1
  78. data/lib/puppet/indirector/catalog/compiler.rb +188 -5
  79. data/lib/puppet/indirector/file_content/http.rb +15 -0
  80. data/lib/puppet/indirector/file_metadata/http.rb +27 -0
  81. data/lib/puppet/indirector/generic_http.rb +16 -0
  82. data/lib/puppet/indirector/node/exec.rb +1 -1
  83. data/lib/puppet/indirector/node/ldap.rb +1 -1
  84. data/lib/puppet/indirector/rest.rb +2 -1
  85. data/lib/puppet/info_service/class_information_service.rb +13 -12
  86. data/lib/puppet/loaders.rb +1 -0
  87. data/lib/puppet/module.rb +3 -0
  88. data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +9 -2
  89. data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +1 -1
  90. data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +2 -2
  91. data/lib/puppet/module_tool/tar/mini.rb +3 -3
  92. data/lib/puppet/network/http/pool.rb +9 -0
  93. data/lib/puppet/node.rb +1 -1
  94. data/lib/puppet/node/environment.rb +11 -2
  95. data/lib/puppet/parser/ast/pops_bridge.rb +19 -22
  96. data/lib/puppet/parser/compiler.rb +3 -3
  97. data/lib/puppet/parser/environment_compiler.rb +0 -1
  98. data/lib/puppet/parser/functions.rb +28 -16
  99. data/lib/puppet/parser/functions/fqdn_rand.rb +1 -1
  100. data/lib/puppet/parser/functions/inline_template.rb +1 -1
  101. data/lib/puppet/parser/functions/map.rb +1 -1
  102. data/lib/puppet/parser/functions/scanf.rb +15 -26
  103. data/lib/puppet/parser/functions/slice.rb +17 -24
  104. data/lib/puppet/parser/functions/split.rb +1 -1
  105. data/lib/puppet/parser/resource.rb +19 -17
  106. data/lib/puppet/parser/scope.rb +176 -5
  107. data/lib/puppet/plugins/data_providers/data_provider.rb +54 -13
  108. data/lib/puppet/pops.rb +0 -8
  109. data/lib/puppet/pops/adaptable.rb +4 -1
  110. data/lib/puppet/pops/adapters.rb +38 -13
  111. data/lib/puppet/pops/binder/binder.rb +21 -17
  112. data/lib/puppet/pops/binder/binder_issues.rb +8 -6
  113. data/lib/puppet/pops/binder/bindings_checker.rb +12 -8
  114. data/lib/puppet/pops/binder/bindings_composer.rb +16 -12
  115. data/lib/puppet/pops/binder/bindings_factory.rb +108 -104
  116. data/lib/puppet/pops/binder/bindings_model.rb +49 -47
  117. data/lib/puppet/pops/binder/config/diagnostic_producer.rb +10 -6
  118. data/lib/puppet/pops/binder/injector.rb +53 -48
  119. data/lib/puppet/pops/binder/key_factory.rb +10 -6
  120. data/lib/puppet/pops/binder/producers.rb +67 -62
  121. data/lib/puppet/pops/evaluator/access_operator.rb +95 -93
  122. data/lib/puppet/pops/evaluator/closure.rb +84 -68
  123. data/lib/puppet/pops/evaluator/collector_transformer.rb +18 -14
  124. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +0 -1
  125. data/lib/puppet/pops/evaluator/compare_operator.rb +13 -9
  126. data/lib/puppet/pops/evaluator/epp_evaluator.rb +9 -8
  127. data/lib/puppet/pops/evaluator/evaluator_impl.rb +78 -76
  128. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +85 -0
  129. data/lib/puppet/pops/evaluator/relationship_operator.rb +13 -11
  130. data/lib/puppet/pops/evaluator/runtime3_converter.rb +5 -0
  131. data/lib/puppet/pops/evaluator/runtime3_support.rb +41 -45
  132. data/lib/puppet/pops/issue_reporter.rb +6 -4
  133. data/lib/puppet/pops/issues.rb +34 -11
  134. data/lib/puppet/pops/loader/base_loader.rb +1 -1
  135. data/lib/puppet/pops/loader/loader.rb +1 -1
  136. data/lib/puppet/pops/loader/loader_paths.rb +15 -0
  137. data/lib/puppet/pops/loader/module_loaders.rb +17 -13
  138. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +16 -12
  139. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +16 -3
  140. data/lib/puppet/pops/loader/type_definition_instantiator.rb +55 -0
  141. data/lib/puppet/pops/loaders.rb +51 -9
  142. data/lib/puppet/pops/lookup.rb +14 -12
  143. data/lib/puppet/pops/merge_strategy.rb +16 -19
  144. data/lib/puppet/pops/model/factory.rb +26 -2
  145. data/lib/puppet/pops/model/model.rb +8 -8
  146. data/lib/puppet/pops/model/model_label_provider.rb +13 -7
  147. data/lib/puppet/pops/model/model_meta.rb +17 -0
  148. data/lib/puppet/pops/model/model_tree_dumper.rb +8 -0
  149. data/lib/puppet/pops/parser/egrammar.ra +38 -14
  150. data/lib/puppet/pops/parser/eparser.rb +1353 -1276
  151. data/lib/puppet/pops/parser/epp_support.rb +11 -7
  152. data/lib/puppet/pops/parser/evaluating_parser.rb +14 -10
  153. data/lib/puppet/pops/parser/heredoc_support.rb +15 -11
  154. data/lib/puppet/pops/parser/lexer2.rb +26 -19
  155. data/lib/puppet/pops/parser/lexer_support.rb +85 -7
  156. data/lib/puppet/pops/parser/locator.rb +21 -0
  157. data/lib/puppet/pops/parser/parser_support.rb +19 -16
  158. data/lib/puppet/pops/parser/slurp_support.rb +11 -7
  159. data/lib/puppet/pops/types/class_loader.rb +23 -19
  160. data/lib/puppet/pops/types/enumeration.rb +9 -26
  161. data/lib/puppet/pops/types/iterable.rb +308 -0
  162. data/lib/puppet/pops/types/recursion_guard.rb +82 -0
  163. data/lib/puppet/pops/types/type_acceptor.rb +25 -0
  164. data/lib/puppet/pops/types/type_asserter.rb +10 -9
  165. data/lib/puppet/pops/types/type_calculator.rb +138 -381
  166. data/lib/puppet/pops/types/type_factory.rb +91 -57
  167. data/lib/puppet/pops/types/type_formatter.rb +334 -0
  168. data/lib/puppet/pops/types/type_mismatch_describer.rb +226 -59
  169. data/lib/puppet/pops/types/type_parser.rb +159 -112
  170. data/lib/puppet/pops/types/types.rb +2057 -1247
  171. data/lib/puppet/pops/utils.rb +11 -10
  172. data/lib/puppet/pops/validation.rb +11 -9
  173. data/lib/puppet/pops/validation/checker4_0.rb +83 -55
  174. data/lib/puppet/pops/validation/validator_factory_4_0.rb +8 -4
  175. data/lib/puppet/provider/aixobject.rb +1 -1
  176. data/lib/puppet/provider/augeas/augeas.rb +1 -1
  177. data/lib/puppet/provider/cron/crontab.rb +1 -1
  178. data/lib/puppet/provider/exec/windows.rb +1 -1
  179. data/lib/puppet/provider/macauthorization/macauthorization.rb +10 -9
  180. data/lib/puppet/provider/nameservice/directoryservice.rb +35 -50
  181. data/lib/puppet/provider/package/appdmg.rb +3 -2
  182. data/lib/puppet/provider/package/dnf.rb +1 -1
  183. data/lib/puppet/provider/package/pip.rb +5 -8
  184. data/lib/puppet/provider/package/pip3.rb +1 -1
  185. data/lib/puppet/provider/package/pkg.rb +1 -1
  186. data/lib/puppet/provider/package/pkgdmg.rb +3 -2
  187. data/lib/puppet/provider/package/pkgng.rb +13 -4
  188. data/lib/puppet/provider/package/windows.rb +1 -1
  189. data/lib/puppet/provider/package/yum.rb +1 -1
  190. data/lib/puppet/provider/package/zypper.rb +19 -0
  191. data/lib/puppet/provider/service/debian.rb +2 -2
  192. data/lib/puppet/provider/service/launchd.rb +6 -18
  193. data/lib/puppet/provider/service/systemd.rb +9 -2
  194. data/lib/puppet/provider/sshkey/parsed.rb +1 -1
  195. data/lib/puppet/provider/user/aix.rb +1 -1
  196. data/lib/puppet/provider/user/directoryservice.rb +33 -58
  197. data/lib/puppet/provider/zfs/zfs.rb +1 -1
  198. data/lib/puppet/provider/zpool/zpool.rb +1 -1
  199. data/lib/puppet/reference/configuration.rb +1 -1
  200. data/lib/puppet/reference/providers.rb +1 -1
  201. data/lib/puppet/resource.rb +15 -12
  202. data/lib/puppet/resource/capability_finder.rb +20 -13
  203. data/lib/puppet/resource/catalog.rb +60 -3
  204. data/lib/puppet/resource/status.rb +11 -2
  205. data/lib/puppet/resource/type.rb +28 -38
  206. data/lib/puppet/settings.rb +1 -1
  207. data/lib/puppet/settings/config_file.rb +1 -1
  208. data/lib/puppet/settings/environment_conf.rb +13 -5
  209. data/lib/puppet/ssl/certificate_factory.rb +3 -3
  210. data/lib/puppet/ssl/certificate_request.rb +4 -4
  211. data/lib/puppet/ssl/certificate_signer.rb +1 -1
  212. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  213. data/lib/puppet/test/test_helper.rb +16 -4
  214. data/lib/puppet/transaction.rb +15 -2
  215. data/lib/puppet/transaction/additional_resource_generator.rb +6 -2
  216. data/lib/puppet/transaction/report.rb +31 -1
  217. data/lib/puppet/transaction/resource_harness.rb +0 -25
  218. data/lib/puppet/type.rb +11 -11
  219. data/lib/puppet/type/augeas.rb +1 -1
  220. data/lib/puppet/type/cron.rb +12 -12
  221. data/lib/puppet/type/file.rb +91 -39
  222. data/lib/puppet/type/file/checksum_value.rb +53 -0
  223. data/lib/puppet/type/file/content.rb +26 -111
  224. data/lib/puppet/type/file/data_sync.rb +84 -0
  225. data/lib/puppet/type/file/ensure.rb +17 -14
  226. data/lib/puppet/type/file/selcontext.rb +1 -1
  227. data/lib/puppet/type/file/source.rb +103 -18
  228. data/lib/puppet/type/filebucket.rb +1 -1
  229. data/lib/puppet/type/interface.rb +8 -3
  230. data/lib/puppet/type/macauthorization.rb +1 -1
  231. data/lib/puppet/type/package.rb +6 -0
  232. data/lib/puppet/type/schedule.rb +1 -1
  233. data/lib/puppet/type/stage.rb +1 -1
  234. data/lib/puppet/type/user.rb +19 -17
  235. data/lib/puppet/type/yumrepo.rb +20 -0
  236. data/lib/puppet/util.rb +109 -22
  237. data/lib/puppet/util/autoload.rb +16 -11
  238. data/lib/puppet/util/checksums.rb +74 -31
  239. data/lib/puppet/util/execution.rb +1 -1
  240. data/lib/puppet/util/http_proxy.rb +72 -0
  241. data/lib/puppet/util/log.rb +2 -0
  242. data/lib/puppet/util/logging.rb +43 -1
  243. data/lib/puppet/util/monkey_patches.rb +2 -2
  244. data/lib/puppet/util/multi_match.rb +51 -0
  245. data/lib/puppet/util/network_device/cisco/device.rb +10 -2
  246. data/lib/puppet/util/network_device/cisco/interface.rb +21 -8
  247. data/lib/puppet/util/network_device/transport/ssh.rb +7 -3
  248. data/lib/puppet/util/network_device/transport/telnet.rb +39 -36
  249. data/lib/puppet/util/plist.rb +130 -0
  250. data/lib/puppet/util/resource_template.rb +1 -1
  251. data/lib/puppet/util/run_mode.rb +2 -2
  252. data/lib/puppet/util/skip_tags.rb +9 -0
  253. data/lib/puppet/util/windows/access_control_entry.rb +1 -1
  254. data/lib/puppet/util/windows/access_control_list.rb +3 -3
  255. data/lib/puppet/util/windows/adsi.rb +4 -4
  256. data/lib/puppet/util/windows/api_types.rb +24 -18
  257. data/lib/puppet/util/windows/com.rb +3 -3
  258. data/lib/puppet/util/windows/error.rb +1 -1
  259. data/lib/puppet/util/windows/file.rb +8 -8
  260. data/lib/puppet/util/windows/principal.rb +23 -14
  261. data/lib/puppet/util/windows/process.rb +78 -11
  262. data/lib/puppet/util/windows/registry.rb +1 -1
  263. data/lib/puppet/util/windows/root_certs.rb +5 -5
  264. data/lib/puppet/util/windows/security.rb +33 -35
  265. data/lib/puppet/util/windows/security_descriptor.rb +1 -1
  266. data/lib/puppet/util/windows/sid.rb +42 -4
  267. data/lib/puppet/util/windows/taskscheduler.rb +15 -15
  268. data/lib/puppet/util/windows/user.rb +10 -10
  269. data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +1 -1
  270. data/lib/puppet/vendor/pathspec/LICENSE +2 -2
  271. data/lib/puppet/vendor/pathspec/README.md +1 -1
  272. data/lib/puppet/vendor/rgen/README.rdoc +1 -1
  273. data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +14 -0
  274. data/lib/puppet/version.rb +1 -1
  275. data/lib/semver.rb +17 -1
  276. data/man/man5/puppet.conf.5 +12 -12
  277. data/man/man8/extlookup2hiera.8 +1 -1
  278. data/man/man8/puppet-agent.8 +2 -2
  279. data/man/man8/puppet-apply.8 +2 -2
  280. data/man/man8/puppet-ca.8 +2 -2
  281. data/man/man8/puppet-catalog.8 +2 -2
  282. data/man/man8/puppet-cert.8 +2 -2
  283. data/man/man8/puppet-certificate.8 +2 -2
  284. data/man/man8/puppet-certificate_request.8 +2 -2
  285. data/man/man8/puppet-certificate_revocation_list.8 +2 -2
  286. data/man/man8/puppet-config.8 +3 -3
  287. data/man/man8/puppet-describe.8 +1 -1
  288. data/man/man8/puppet-device.8 +1 -1
  289. data/man/man8/puppet-doc.8 +1 -1
  290. data/man/man8/puppet-epp.8 +2 -2
  291. data/man/man8/puppet-facts.8 +2 -2
  292. data/man/man8/puppet-file.8 +2 -2
  293. data/man/man8/puppet-filebucket.8 +2 -2
  294. data/man/man8/puppet-help.8 +2 -2
  295. data/man/man8/puppet-inspect.8 +2 -2
  296. data/man/man8/puppet-key.8 +2 -2
  297. data/man/man8/puppet-man.8 +2 -2
  298. data/man/man8/puppet-master.8 +2 -2
  299. data/man/man8/puppet-module.8 +9 -9
  300. data/man/man8/puppet-node.8 +2 -2
  301. data/man/man8/puppet-parser.8 +2 -2
  302. data/man/man8/puppet-plugin.8 +2 -2
  303. data/man/man8/puppet-report.8 +2 -2
  304. data/man/man8/puppet-resource.8 +2 -2
  305. data/man/man8/puppet-resource_type.8 +2 -2
  306. data/man/man8/puppet-status.8 +3 -3
  307. data/man/man8/puppet.8 +1 -1
  308. data/spec/fixtures/module.tar.gz +0 -0
  309. data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +1 -0
  310. data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/manifests/init.pp +0 -1
  311. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/data/empty.json +0 -0
  312. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/hiera.yaml +5 -0
  313. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/manifests/init.pp +2 -0
  314. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/metadata.json +9 -0
  315. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/data/empty.yaml +1 -0
  316. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/hiera.yaml +5 -0
  317. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/manifests/init.pp +2 -0
  318. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/metadata.json +9 -0
  319. data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +2 -1
  320. data/spec/fixtures/unit/module/trailing-comma.json +1 -1
  321. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +3 -1
  322. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +1 -0
  323. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +1 -0
  324. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +1 -0
  325. data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +187 -0
  326. data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +8 -0
  327. 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
  328. 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
  329. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +213 -0
  330. 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
  331. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +197 -0
  332. 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
  333. 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
  334. data/spec/integration/defaults_spec.rb +14 -2
  335. data/spec/integration/file_system/uniquefile_spec.rb +29 -0
  336. data/spec/integration/module_tool/tar/mini_spec.rb +28 -0
  337. data/spec/integration/node/environment_spec.rb +13 -0
  338. data/spec/integration/parser/dynamic_scoping_spec.rb +67 -0
  339. data/spec/integration/parser/parameter_defaults_spec.rb +336 -0
  340. data/spec/integration/parser/undef_param_spec.rb +8 -0
  341. data/spec/integration/provider/yumrepo_spec.rb +1 -1
  342. data/spec/integration/test/test_helper_spec.rb +28 -0
  343. data/spec/integration/transaction/report_spec.rb +16 -0
  344. data/spec/integration/transaction_spec.rb +11 -0
  345. data/spec/integration/type/file_spec.rb +194 -4
  346. data/spec/integration/type/package_spec.rb +5 -1
  347. data/spec/integration/type/tidy_spec.rb +21 -9
  348. data/spec/integration/util/execution_spec.rb +22 -0
  349. data/spec/integration/util/windows/principal_spec.rb +90 -4
  350. data/spec/integration/util/windows/process_spec.rb +31 -0
  351. data/spec/integration/util/windows/security_spec.rb +6 -6
  352. data/spec/integration/util/windows/user_spec.rb +1 -1
  353. data/spec/integration/util_spec.rb +49 -27
  354. data/spec/lib/puppet_spec/compiler.rb +17 -0
  355. data/spec/lib/puppet_spec/files.rb +2 -2
  356. data/spec/lib/puppet_spec/pops.rb +13 -0
  357. data/spec/shared_behaviours/iterative_functions.rb +1 -1
  358. data/spec/shared_contexts/types_setup.rb +96 -0
  359. data/spec/unit/agent_spec.rb +1 -0
  360. data/spec/unit/application/agent_spec.rb +10 -0
  361. data/spec/unit/application/apply_spec.rb +9 -0
  362. data/spec/unit/configurer/downloader_spec.rb +5 -5
  363. data/spec/unit/configurer_spec.rb +271 -39
  364. data/spec/unit/data_providers/hiera_interpolation_spec.rb +57 -0
  365. data/spec/unit/defaults_spec.rb +15 -0
  366. data/spec/unit/environments_spec.rb +24 -4
  367. data/spec/unit/face/parser_spec.rb +43 -2
  368. data/spec/unit/file_serving/http_metadata_spec.rb +85 -0
  369. data/spec/unit/file_serving/metadata_spec.rb +50 -0
  370. data/spec/unit/file_serving/terminus_selector_spec.rb +12 -2
  371. data/spec/unit/file_system_spec.rb +26 -0
  372. data/spec/unit/functions/assert_type_spec.rb +36 -2
  373. data/spec/unit/functions/defined_spec.rb +2 -2
  374. data/spec/unit/functions/epp_spec.rb +11 -3
  375. data/spec/unit/functions/lookup_spec.rb +58 -13
  376. data/spec/unit/functions/regsubst_spec.rb +1 -1
  377. data/spec/unit/functions/reverse_each_spec.rb +108 -0
  378. data/spec/unit/functions/step_spec.rb +113 -0
  379. data/spec/unit/functions/type_spec.rb +35 -0
  380. data/spec/unit/functions4_spec.rb +61 -5
  381. data/spec/unit/indirector/catalog/compiler_spec.rb +705 -4
  382. data/spec/unit/indirector/file_bucket_file/file_spec.rb +1 -1
  383. data/spec/unit/indirector/indirection_spec.rb +1 -1
  384. data/spec/unit/info_service_spec.rb +94 -32
  385. data/spec/unit/module_spec.rb +14 -0
  386. data/spec/unit/module_tool/applications/builder_spec.rb +4 -4
  387. data/spec/unit/network/authstore_spec.rb +1 -1
  388. data/spec/unit/network/http/connection_spec.rb +1 -0
  389. data/spec/unit/network/http/pool_spec.rb +30 -0
  390. data/spec/unit/node_spec.rb +1 -1
  391. data/spec/unit/parser/compiler_spec.rb +16 -0
  392. data/spec/unit/parser/scope_spec.rb +28 -11
  393. data/spec/unit/pops/evaluator/access_ops_spec.rb +3 -3
  394. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
  395. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +7 -1
  396. data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +4 -4
  397. data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +63 -0
  398. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +6 -0
  399. data/spec/unit/pops/loaders/dependency_loader_spec.rb +53 -0
  400. data/spec/unit/pops/loaders/loaders_spec.rb +44 -1
  401. data/spec/unit/pops/parser/lexer2_spec.rb +112 -3
  402. data/spec/unit/pops/parser/parse_calls_spec.rb +8 -0
  403. data/spec/unit/pops/parser/parser_spec.rb +10 -0
  404. data/spec/unit/pops/parser/source_pos_adapter_spec.rb +26 -0
  405. data/spec/unit/pops/types/iterable_spec.rb +262 -0
  406. data/spec/unit/pops/types/recursion_guard_spec.rb +91 -0
  407. data/spec/unit/pops/types/type_acceptor_spec.rb +105 -0
  408. data/spec/unit/pops/types/type_asserter_spec.rb +43 -0
  409. data/spec/unit/pops/types/type_calculator_spec.rb +275 -373
  410. data/spec/unit/pops/types/type_formatter_spec.rb +280 -0
  411. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +152 -0
  412. data/spec/unit/pops/types/type_parser_spec.rb +58 -13
  413. data/spec/unit/pops/types/types_spec.rb +241 -0
  414. data/spec/unit/pops/validator/validator_spec.rb +100 -43
  415. data/spec/unit/provider/cron/parsed_spec.rb +1 -0
  416. data/spec/unit/provider/macauthorization_spec.rb +5 -2
  417. data/spec/unit/provider/nameservice/directoryservice_spec.rb +14 -19
  418. data/spec/unit/provider/package/appdmg_spec.rb +3 -3
  419. data/spec/unit/provider/package/dnf_spec.rb +16 -0
  420. data/spec/unit/provider/package/pip3_spec.rb +60 -42
  421. data/spec/unit/provider/package/pip_spec.rb +47 -34
  422. data/spec/unit/provider/package/pkgdmg_spec.rb +18 -9
  423. data/spec/unit/provider/package/pkgng_spec.rb +4 -2
  424. data/spec/unit/provider/package/yum_spec.rb +11 -0
  425. data/spec/unit/provider/package/zypper_spec.rb +14 -0
  426. data/spec/unit/provider/service/launchd_spec.rb +17 -35
  427. data/spec/unit/provider/service/systemd_spec.rb +7 -0
  428. data/spec/unit/provider/sshkey/parsed_spec.rb +20 -19
  429. data/spec/unit/provider/user/directoryservice_spec.rb +40 -59
  430. data/spec/unit/resource/capability_finder_spec.rb +28 -15
  431. data/spec/unit/resource/catalog_spec.rb +33 -1
  432. data/spec/unit/resource/type_spec.rb +149 -7
  433. data/spec/unit/resource_spec.rb +96 -57
  434. data/spec/unit/settings/environment_conf_spec.rb +18 -1
  435. data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -3
  436. data/spec/unit/transaction/report_spec.rb +27 -0
  437. data/spec/unit/transaction/resource_harness_spec.rb +0 -47
  438. data/spec/unit/transaction_spec.rb +5 -0
  439. data/spec/unit/type/file/checksum_spec.rb +6 -0
  440. data/spec/unit/type/file/checksum_value_spec.rb +286 -0
  441. data/spec/unit/type/file/content_spec.rb +12 -193
  442. data/spec/unit/type/file/source_spec.rb +211 -119
  443. data/spec/unit/type/file_spec.rb +133 -34
  444. data/spec/unit/type/interface_spec.rb +32 -0
  445. data/spec/unit/type/macauthorization_spec.rb +4 -1
  446. data/spec/unit/type/yumrepo_spec.rb +2 -2
  447. data/spec/unit/util/filetype_spec.rb +1 -1
  448. data/spec/unit/util/http_proxy_spec.rb +2 -2
  449. data/spec/unit/util/log/destinations_spec.rb +0 -2
  450. data/spec/unit/util/logging_spec.rb +69 -0
  451. data/spec/unit/util/multi_match_spec.rb +39 -0
  452. data/spec/unit/util/network_device/cisco/device_spec.rb +253 -216
  453. data/spec/unit/util/network_device/transport/telnet_spec.rb +60 -58
  454. data/spec/unit/util/plist_spec.rb +110 -0
  455. data/spec/unit/util/resource_template_spec.rb +2 -2
  456. data/spec/unit/util/run_mode_spec.rb +27 -3
  457. data/spec/unit/util/windows/adsi_spec.rb +4 -4
  458. data/spec/unit/util/windows/api_types_spec.rb +42 -0
  459. data/spec/unit/util/windows/security_descriptor_spec.rb +3 -3
  460. data/spec/unit/util/windows/sid_spec.rb +1 -1
  461. data/spec/unit/util_spec.rb +123 -13
  462. data/tasks/cfpropertylist.rake +15 -0
  463. metadata +114 -26
  464. data/lib/puppet/vendor/load_plist.rb +0 -1
  465. data/lib/puppet/vendor/plist/CHANGELOG +0 -82
  466. data/lib/puppet/vendor/plist/MIT-LICENSE +0 -21
  467. data/lib/puppet/vendor/plist/PUPPET_README.md +0 -6
  468. data/lib/puppet/vendor/plist/README +0 -36
  469. data/lib/puppet/vendor/plist/Rakefile +0 -144
  470. data/lib/puppet/vendor/plist/docs/USAGE +0 -104
  471. data/lib/puppet/vendor/plist/docs/jamis-template.rb +0 -591
  472. data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
  473. data/lib/puppet/vendor/plist/lib/plist/generator.rb +0 -224
  474. data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
  475. data/lib/puppet/vendor/plist/test/assets/AlbumData.xml +0 -203
  476. data/lib/puppet/vendor/plist/test/assets/Cookies.plist +0 -104
  477. data/lib/puppet/vendor/plist/test/assets/commented.plist +0 -9
  478. data/lib/puppet/vendor/plist/test/assets/example_data.bin +0 -0
  479. data/lib/puppet/vendor/plist/test/assets/example_data.jpg +0 -0
  480. data/lib/puppet/vendor/plist/test/assets/example_data.plist +0 -259
  481. data/lib/puppet/vendor/plist/test/assets/test_data_elements.plist +0 -24
  482. data/lib/puppet/vendor/plist/test/assets/test_empty_key.plist +0 -13
  483. data/lib/puppet/vendor/plist/test/test_data_elements.rb +0 -115
  484. data/lib/puppet/vendor/plist/test/test_generator.rb +0 -59
  485. data/lib/puppet/vendor/plist/test/test_generator_basic_types.rb +0 -58
  486. data/lib/puppet/vendor/plist/test/test_generator_collections.rb +0 -82
  487. data/lib/puppet/vendor/plist/test/test_parser.rb +0 -90
@@ -34,14 +34,6 @@ module Puppet
34
34
 
35
35
  # (the Types module initializes itself)
36
36
  require 'puppet/pops/types/types'
37
- require 'puppet/pops/types/type_asserter'
38
- require 'puppet/pops/types/type_assertion_error'
39
- require 'puppet/pops/types/type_calculator'
40
- require 'puppet/pops/types/type_factory'
41
- require 'puppet/pops/types/type_parser'
42
- require 'puppet/pops/types/class_loader'
43
- require 'puppet/pops/types/enumeration'
44
- require 'puppet/pops/types/type_mismatch_describer'
45
37
 
46
38
  require 'puppet/pops/merge_strategy'
47
39
 
@@ -15,7 +15,8 @@
15
15
  # be exploited as the implementation of _being adaptable_ may change in the future.
16
16
  # @api private
17
17
  #
18
- module Puppet::Pops::Adaptable
18
+ module Puppet::Pops
19
+ module Adaptable
19
20
  # Base class for an Adapter.
20
21
  #
21
22
  # A typical adapter just defines some accessors.
@@ -199,3 +200,5 @@ module Puppet::Pops::Adaptable
199
200
  end
200
201
  end
201
202
  end
203
+ end
204
+
@@ -1,11 +1,12 @@
1
1
  # The Adapters module contains adapters for Documentation, Origin, SourcePosition, and Loader.
2
2
  #
3
- module Puppet::Pops::Adapters
3
+ module Puppet::Pops
4
+ module Adapters
4
5
  # A documentation adapter adapts an object with a documentation string.
5
6
  # (The intended use is for a source text parser to extract documentation and store this
6
7
  # in DocumentationAdapter instances).
7
8
  #
8
- class DocumentationAdapter < Puppet::Pops::Adaptable::Adapter
9
+ class DocumentationAdapter < Adaptable::Adapter
9
10
  # @return [String] The documentation associated with an object
10
11
  attr_accessor :documentation
11
12
  end
@@ -19,9 +20,9 @@ module Puppet::Pops::Adapters
19
20
  # @note It is relatively expensive to compute line and position on line - it is not something that
20
21
  # should be done for every token or model object.
21
22
  #
22
- # @see Puppet::Pops::Utils#find_adapter, Puppet::Pops::Utils#find_closest_positioned
23
+ # @see Utils#find_adapter, Utils#find_closest_positioned
23
24
  #
24
- class SourcePosAdapter < Puppet::Pops::Adaptable::Adapter
25
+ class SourcePosAdapter < Adaptable::Adapter
25
26
  attr_accessor :locator
26
27
  attr_reader :adapted
27
28
 
@@ -45,10 +46,10 @@ module Puppet::Pops::Adapters
45
46
  raise ArgumentError, "InternalError: SourcePosAdapter for something that has no locator among parents"
46
47
  end
47
48
  case
48
- when o.is_a?(Puppet::Pops::Model::Program)
49
+ when o.is_a?(Model::Program)
49
50
  return o.locator
50
51
  # TODO_HEREDOC use case of SubLocator instead
51
- when o.is_a?(Puppet::Pops::Model::SubLocatedExpression) && !(found_locator = o.locator).nil?
52
+ when o.is_a?(Model::SubLocatedExpression) && !(found_locator = o.locator).nil?
52
53
  return found_locator
53
54
  when adapter = self.class.get(o)
54
55
  return adapter.locator
@@ -83,7 +84,7 @@ module Puppet::Pops::Adapters
83
84
 
84
85
  # Extracts the text represented by this source position (the string is obtained from the locator)
85
86
  def extract_text
86
- locator.string.slice(offset, length)
87
+ locator.extract_text(offset, length)
87
88
  end
88
89
 
89
90
  def extract_tree_text
@@ -91,11 +92,12 @@ module Puppet::Pops::Adapters
91
92
  last = first + @adapted.length
92
93
  @adapted.eAllContents.each do |m|
93
94
  m_offset = m.offset
95
+ next if m_offset.nil?
94
96
  first = m_offset if m_offset < first
95
97
  m_last = m_offset + m.length
96
98
  last = m_last if m_last > last
97
99
  end
98
- locator.string.slice(first, last-first)
100
+ locator.extract_text(first, last-first)
99
101
  end
100
102
 
101
103
  # Produces an URI with path?line=n&pos=n. If origin is unknown the URI is string:?line=n&pos=n
@@ -106,19 +108,41 @@ module Puppet::Pops::Adapters
106
108
  end
107
109
  end
108
110
 
109
- # A LoaderAdapter adapts an object with a {Puppet::Pops::Loader}. This is used to make further loading from the
111
+ # A LoaderAdapter adapts an object with a {Loader}. This is used to make further loading from the
110
112
  # perspective of the adapted object take place in the perspective of this Loader.
111
113
  #
112
114
  # It is typically enough to adapt the root of a model as a search is made towards the root of the model
113
115
  # until a loader is found, but there is no harm in duplicating this information provided a contained
114
116
  # object is adapted with the correct loader.
115
117
  #
116
- # @see Puppet::Pops::Utils#find_adapter
118
+ # @see Utils#find_adapter
117
119
  #
118
- class LoaderAdapter < Puppet::Pops::Adaptable::Adapter
119
- # @return [Puppet::Pops::Loader::Loader] the loader
120
+ class LoaderAdapter < Adaptable::Adapter
121
+ # @return [Loader::Loader] the loader
120
122
  attr_accessor :loader
121
123
 
124
+ # Finds the loader to use when loading originates from the source position of the given argument.
125
+ #
126
+ # @param instance [Model::PopsObject] The model object
127
+ # @param scope [Puppet::Parser::Scope] The scope to use
128
+ # @return [Loader,nil] the found loader or `nil` if it could not be found
129
+ #
130
+ def self.loader_for_model_object(model, scope)
131
+ # find the loader that loaded the code, or use the private_environment_loader (sees env + all modules)
132
+ adapter = Utils.find_adapter(model, self)
133
+ return adapter.loader unless adapter.nil?
134
+
135
+ if scope.nil?
136
+ loaders = Puppet.lookup(:loaders) { nil }
137
+ loaders.nil? ? nil : loaders.private_environment_loader
138
+ else
139
+ # Use source location to determine calling module, or use the private_environment_loader (sees env + all modules)
140
+ # This is necessary since not all .pp files are loaded by a Loader (see PUP-1833)
141
+ adapter = adapt_by_source(scope, model)
142
+ adapter.nil? ? scope.compiler.loaders.private_environment_loader : adapter.loader
143
+ end
144
+ end
145
+
122
146
  # Attempts to find the module that `instance` originates from by looking at it's {SourcePosAdapter} and
123
147
  # compare the `locator.file` found there with the module paths given in the environment found in the
124
148
  # given `scope`. If the file is found to be relative to a path, then the first segment of the relative
@@ -130,7 +154,7 @@ module Puppet::Pops::Adapters
130
154
  # @param scope
131
155
  # @param instance
132
156
  def self.adapt_by_source(scope, instance)
133
- source_pos = Puppet::Pops::Utils.find_adapter(instance, SourcePosAdapter)
157
+ source_pos = Utils.find_adapter(instance, SourcePosAdapter)
134
158
  unless source_pos.nil?
135
159
  mod = find_module_for_file(scope.environment, source_pos.locator.file)
136
160
  unless mod.nil?
@@ -162,3 +186,4 @@ module Puppet::Pops::Adapters
162
186
  private_class_method :find_module_for_file
163
187
  end
164
188
  end
189
+ end
@@ -3,11 +3,13 @@
3
3
  # An instance should be created and a call to {#define_layers} should be made which will process the layered bindings
4
4
  # (handle overrides, abstract entries etc.).
5
5
  # The constructed hash with `key => InjectorEntry` mappings is obtained as {#injector_entries}, and is used to initialize an
6
- # {Puppet::Pops::Binder::Injector Injector}.
6
+ # {Injector Injector}.
7
7
  #
8
8
  # @api public
9
9
  #
10
- class Puppet::Pops::Binder::Binder
10
+ module Puppet::Pops
11
+ module Binder
12
+ class Binder
11
13
 
12
14
  # @api private
13
15
  attr_reader :injector_entries
@@ -35,7 +37,7 @@ class Puppet::Pops::Binder::Binder
35
37
  @parent = parent_binder
36
38
  @id_index = Hash.new() { |k, v| [] }
37
39
 
38
- @key_factory = Puppet::Pops::Binder::KeyFactory.new()
40
+ @key_factory = KeyFactory.new()
39
41
 
40
42
  # Resulting hash of all key -> binding
41
43
  @injector_entries = {}
@@ -58,11 +60,11 @@ class Puppet::Pops::Binder::Binder
58
60
  # validated to get better error messages if the model is invalid. This implementation expects the model
59
61
  # to be valid, and any errors raised will be more technical runtime errors.
60
62
  #
61
- # @param layered_bindings [Puppet::Pops::Binder::Bindings::LayeredBindings] the named and ordered layers
63
+ # @param layered_bindings [Bindings::LayeredBindings] the named and ordered layers
62
64
  # @raise ArgumentError if this binder is already configured
63
65
  # @raise ArgumentError if bindings with unresolved 'override' surfaces as an effective binding
64
66
  # @raise ArgumentError if the given argument has the wrong type, or if model is invalid in some way
65
- # @return [Puppet::Pops::Binder::Binder] self
67
+ # @return [Binder] self
66
68
  # @api public
67
69
  #
68
70
  def define_layers(layered_bindings)
@@ -107,7 +109,7 @@ class Puppet::Pops::Binder::Binder
107
109
  end
108
110
 
109
111
  def add_id_to_index(binding)
110
- return unless binding.is_a?(Puppet::Pops::Binder::Bindings::Multibinding) && !(id = binding.id).nil?
112
+ return unless binding.is_a?(Bindings::Multibinding) && !(id = binding.id).nil?
111
113
  @id_index[id] = @id_index[id] << binding
112
114
  end
113
115
 
@@ -118,7 +120,7 @@ class Puppet::Pops::Binder::Binder
118
120
  entry = lookup(key)
119
121
  unless entry.precedence == @binder_precedence
120
122
  # it is from a lower layer it must be promoted
121
- injector_entries[ key ] = Puppet::Pops::Binder::InjectorEntry.new(binding, binder_precedence)
123
+ injector_entries[ key ] = InjectorEntry.new(binding, binder_precedence)
122
124
  end
123
125
  end
124
126
  # recursive "up the parent chain" to promote all
@@ -138,7 +140,7 @@ class Puppet::Pops::Binder::Binder
138
140
 
139
141
  # @api private
140
142
  def self.format_binding(b)
141
- type_name = Puppet::Pops::Types::TypeCalculator.singleton.string(b.type)
143
+ type_name = b.type.to_s
142
144
  layer_name, bindings_name = get_named_binding_layer_and_name(b)
143
145
  "binding: '#{type_name}/#{b.name}' in: '#{bindings_name}' in layer: '#{layer_name}'"
144
146
  end
@@ -152,14 +154,14 @@ class Puppet::Pops::Binder::Binder
152
154
  # @api private
153
155
  def self.get_named_binding_layer_and_name(b)
154
156
  return ['<unknown>', '<unknown>'] if b.nil?
155
- return [get_named_layer(b), b.name] if b.is_a?(Puppet::Pops::Binder::Bindings::NamedBindings)
157
+ return [get_named_layer(b), b.name] if b.is_a?(Bindings::NamedBindings)
156
158
  get_named_binding_layer_and_name(b.eContainer)
157
159
  end
158
160
 
159
161
  # @api private
160
162
  def self.get_named_layer(b)
161
163
  return '<unknown>' if b.nil?
162
- return b.name if b.is_a?(Puppet::Pops::Binder::Bindings::NamedLayer)
164
+ return b.name if b.is_a?(Bindings::NamedLayer)
163
165
  get_named_layer(b.eContainer)
164
166
  end
165
167
 
@@ -181,21 +183,21 @@ class Puppet::Pops::Binder::Binder
181
183
  @key_factory = key_factory
182
184
  @bindings = []
183
185
  @contributions = []
184
- @@bind_visitor ||= Puppet::Pops::Visitor.new(nil,"bind",0,0)
186
+ @@bind_visitor ||= Visitor.new(nil,"bind",0,0)
185
187
  end
186
188
 
187
189
  # Add the binding to the list of potentially effective bindings from this layer
188
190
  # @api private
189
191
  #
190
192
  def add(b)
191
- bindings << Puppet::Pops::Binder::InjectorEntry.new(b, binder_precedence)
193
+ bindings << InjectorEntry.new(b, binder_precedence)
192
194
  end
193
195
 
194
196
  # Add a multibind contribution
195
197
  # @api private
196
198
  #
197
199
  def add_contribution(b)
198
- contributions << Puppet::Pops::Binder::InjectorEntry.new(b, binder_precedence)
200
+ contributions << InjectorEntry.new(b, binder_precedence)
199
201
  end
200
202
 
201
203
  # Bind given abstract binding
@@ -205,7 +207,7 @@ class Puppet::Pops::Binder::Binder
205
207
  @@bind_visitor.visit_this_0(self, binding)
206
208
  end
207
209
 
208
- # @return [Puppet::Pops::Binder::InjectorEntry] the entry with the highest precedence
210
+ # @return [InjectorEntry] the entry with the highest precedence
209
211
  # @api private
210
212
  def highest(b1, b2)
211
213
  if b1.is_abstract? != b2.is_abstract?
@@ -268,7 +270,7 @@ class Puppet::Pops::Binder::Binder
268
270
 
269
271
 
270
272
  # Produces the key for the given Binding.
271
- # @param binding [Puppet::Pops::Binder::Bindings::Binding] the binding to get a key for
273
+ # @param binding [Bindings::Binding] the binding to get a key for
272
274
  # @return [Object] an opaque key
273
275
  # @api private
274
276
  #
@@ -318,8 +320,8 @@ class Puppet::Pops::Binder::Binder
318
320
  entry = binder.injector_entries[k]
319
321
  unless key_factory.is_contributions_key?(k)
320
322
  if v.is_abstract?()
321
- layer_name, bindings_name = Puppet::Pops::Binder::Binder.get_named_binding_layer_and_name(v.binding)
322
- type_name = Puppet::Pops::Types::TypeCalculator.singleton.string(v.binding.type)
323
+ layer_name, bindings_name = Binder.get_named_binding_layer_and_name(v.binding)
324
+ type_name = v.binding.type.to_s
323
325
  raise ArgumentError, "The abstract binding '#{type_name}/#{v.binding.name}' in '#{bindings_name}' in layer '#{layer_name}' was not overridden"
324
326
  end
325
327
  raise ArgumentError, "Internal Error - redefinition of key: #{k}, (should never happen)" if entry
@@ -392,3 +394,5 @@ class Puppet::Pops::Binder::Binder
392
394
  end
393
395
  end
394
396
  end
397
+ end
398
+ end
@@ -1,8 +1,9 @@
1
+ module Puppet::Pops
1
2
  # @api public
2
- module Puppet::Pops::Binder::BinderIssues
3
+ module Binder::BinderIssues
3
4
 
4
5
  # NOTE: The methods #issue and #hard_issue are done in a somewhat funny way
5
- # since the Puppet::Pops::Issues is a module with these methods defined on the module-class
6
+ # since the Issues is a module with these methods defined on the module-class
6
7
  # This makes it hard to inherit them in this module. (Likewise if Issues was a class, and they
7
8
  # need to be defined for the class, and such methods are also not inherited, it becomes more
8
9
  # difficult to reuse these. It did not seem as a good idea to refactor Issues at this point
@@ -10,14 +11,14 @@ module Puppet::Pops::Binder::BinderIssues
10
11
  # Meanwhile, they delegate to Issues.
11
12
 
12
13
 
13
- # (see Puppet::Pops::Issues#issue)
14
+ # (see Issues#issue)
14
15
  def self.issue (issue_code, *args, &block)
15
- Puppet::Pops::Issues.issue(issue_code, *args, &block)
16
+ Issues.issue(issue_code, *args, &block)
16
17
  end
17
18
 
18
- # (see Puppet::Pops::Issues#hard_issue)
19
+ # (see Issues#hard_issue)
19
20
  def self.hard_issue(issue_code, *args, &block)
20
- Puppet::Pops::Issues.hard_issue(issue_code, *args, &block)
21
+ Issues.hard_issue(issue_code, *args, &block)
21
22
  end
22
23
 
23
24
  # Producer issues (binding identified using :binding argument)
@@ -120,3 +121,4 @@ module Puppet::Pops::Binder::BinderIssues
120
121
  end
121
122
 
122
123
  end
124
+ end
@@ -1,19 +1,21 @@
1
+ module Puppet::Pops
2
+ module Binder
1
3
  # A validator/checker of a bindings model
2
4
  # @api public
3
5
  #
4
- class Puppet::Pops::Binder::BindingsChecker
5
- Bindings = Puppet::Pops::Binder::Bindings
6
- Issues = Puppet::Pops::Binder::BinderIssues
7
- Types = Puppet::Pops::Types
6
+ class BindingsChecker
7
+ Bindings = Bindings
8
+ Issues = BinderIssues
9
+ Types = Types
8
10
 
9
11
  attr_reader :type_calculator
10
12
  attr_reader :acceptor
11
13
 
12
14
  # @api public
13
15
  def initialize(diagnostics_producer)
14
- @@check_visitor ||= Puppet::Pops::Visitor.new(nil, "check", 0, 0)
15
- @type_calculator = Puppet::Pops::Types::TypeCalculator.singleton
16
- @expression_validator = Puppet::Pops::Validation::ValidatorFactory_4_0.new().checker(diagnostics_producer)
16
+ @@check_visitor ||= Visitor.new(nil, "check", 0, 0)
17
+ @type_calculator = Types::TypeCalculator.singleton
18
+ @expression_validator = Validation::ValidatorFactory_4_0.new().checker(diagnostics_producer)
17
19
  @acceptor = diagnostics_producer
18
20
  end
19
21
 
@@ -109,7 +111,7 @@ class Puppet::Pops::Binder::BindingsChecker
109
111
  # Checks that an expression has been declared in the producer
110
112
  # @api private
111
113
  def check_EvaluatingProducerDescriptor(p)
112
- unless p.expression.is_a?(Puppet::Pops::Model::Expression)
114
+ unless p.expression.is_a?(Model::Expression)
113
115
  acceptor.accept(Issues::MISSING_EXPRESSION, p, {:binding => binding_parent(p)})
114
116
  end
115
117
  end
@@ -195,3 +197,5 @@ class Puppet::Pops::Binder::BindingsChecker
195
197
  p
196
198
  end
197
199
  end
200
+ end
201
+ end
@@ -1,5 +1,7 @@
1
+ module Puppet::Pops
2
+ module Binder
1
3
  # The BindingsComposer handles composition of multiple bindings sources
2
- # It is directed by a {Puppet::Pops::Binder::Config::BinderConfig BinderConfig} that indicates how
4
+ # It is directed by a {Config::BinderConfig BinderConfig} that indicates how
3
5
  # the final composition should be layered, and what should be included/excluded in each layer
4
6
  #
5
7
  # The bindings composer is intended to be used once per environment as the compiler starts its work.
@@ -11,7 +13,7 @@
11
13
  #
12
14
  require 'puppet/plugins/binding_schemes'
13
15
 
14
- class Puppet::Pops::Binder::BindingsComposer
16
+ class BindingsComposer
15
17
 
16
18
  # The BindingsConfig instance holding the read and parsed, but not evaluated configuration
17
19
  # @api public
@@ -39,11 +41,11 @@ class Puppet::Pops::Binder::BindingsComposer
39
41
 
40
42
  # @api public
41
43
  def initialize()
42
- @acceptor = Puppet::Pops::Validation::Acceptor.new()
43
- @diagnostics = Puppet::Pops::Binder::Config::DiagnosticProducer.new(acceptor)
44
- @config = Puppet::Pops::Binder::Config::BinderConfig.new(@diagnostics)
44
+ @acceptor = Validation::Acceptor.new()
45
+ @diagnostics = Config::DiagnosticProducer.new(acceptor)
46
+ @config = Config::BinderConfig.new(@diagnostics)
45
47
  if acceptor.errors?
46
- Puppet::Pops::IssueReporter.assert_and_report(acceptor, :message => 'Binding Composer: error while reading config.')
48
+ IssueReporter.assert_and_report(acceptor, :message => 'Binding Composer: error while reading config.')
47
49
  raise Puppet::DevError.new("Internal Error: IssueReporter did not raise exception for errors in bindings config.")
48
50
  end
49
51
  end
@@ -66,7 +68,7 @@ class Puppet::Pops::Binder::BindingsComposer
66
68
  scheme_extensions = @config.scheme_extensions
67
69
 
68
70
  # Define a named bindings that are known by the SystemBindings
69
- boot_bindings = Puppet::Pops::Binder::BindingsFactory.named_bindings(Puppet::Pops::Binder::SystemBindings::ENVIRONMENT_BOOT_BINDINGS_NAME) do
71
+ boot_bindings = BindingsFactory.named_bindings(SystemBindings::ENVIRONMENT_BOOT_BINDINGS_NAME) do
70
72
  scheme_extensions.each_pair do |scheme, class_name|
71
73
  # turn each scheme => class_name into a binding (contribute to the buildings-schemes multibind).
72
74
  # do this in category 'extensions' to allow them to override the 'default'
@@ -82,7 +84,7 @@ class Puppet::Pops::Binder::BindingsComposer
82
84
  @injector = scope.compiler.create_boot_injector(boot_bindings.model)
83
85
  end
84
86
 
85
- # @return [Puppet::Pops::Binder::Bindings::LayeredBindings]
87
+ # @return [Bindings::LayeredBindings]
86
88
  def compose(scope)
87
89
  # The boot injector is used to lookup scheme-handlers
88
90
  configure_and_create_injector(scope)
@@ -94,7 +96,7 @@ class Puppet::Pops::Binder::BindingsComposer
94
96
  # setup the confdir
95
97
  @confdir = Puppet.settings[:confdir]
96
98
 
97
- factory = Puppet::Pops::Binder::BindingsFactory
99
+ factory = BindingsFactory
98
100
  contributions = []
99
101
  configured_layers = @config.layering_config.collect do | layer_config |
100
102
  # get contributions
@@ -108,8 +110,8 @@ class Puppet::Pops::Binder::BindingsComposer
108
110
  # Add the two system layers; the final - highest ("can not be overridden" layer), and the lowest
109
111
  # Everything here can be overridden 'default' layer.
110
112
  #
111
- configured_layers.insert(0, Puppet::Pops::Binder::SystemBindings.final_contribution)
112
- configured_layers.insert(-1, Puppet::Pops::Binder::SystemBindings.default_contribution)
113
+ configured_layers.insert(0, SystemBindings.final_contribution)
114
+ configured_layers.insert(-1, SystemBindings.default_contribution)
113
115
 
114
116
  # and finally... create the resulting structure
115
117
  factory.layered_bindings(*configured_layers)
@@ -158,7 +160,7 @@ class Puppet::Pops::Binder::BindingsComposer
158
160
  end
159
161
 
160
162
  class SchemeHandlerHelper
161
- T = Puppet::Pops::Types::TypeFactory
163
+ T = Types::TypeFactory
162
164
  HASH_OF_HANDLER = T.hash_of(T.type_of(Puppet::Plugins::BindingSchemes::BINDINGS_SCHEMES_TYPE))
163
165
  def initialize(scope)
164
166
  @scope = scope
@@ -175,3 +177,5 @@ class Puppet::Pops::Binder::BindingsComposer
175
177
  end
176
178
 
177
179
  end
180
+ end
181
+ end