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
@@ -1,11 +1,13 @@
1
+ module Puppet::Pops
2
+ module Binder
1
3
  # A helper class that makes it easier to construct a Bindings model.
2
4
  #
3
5
  # The Bindings Model
4
6
  # ------------------
5
- # The BindingsModel (defined in {Puppet::Pops::Binder::Bindings} is a model that is intended to be generally free from Ruby concerns.
7
+ # The BindingsModel (defined in {Bindings} is a model that is intended to be generally free from Ruby concerns.
6
8
  # This means that it is possible for system integrators to create and serialize such models using other technologies than
7
9
  # Ruby. This manifests itself in the model in that producers are described using instances of a `ProducerDescriptor` rather than
8
- # describing Ruby classes directly. This is also true of the type system where type is expressed using the {Puppet::Pops::Types} model
10
+ # describing Ruby classes directly. This is also true of the type system where type is expressed using the {Types} model
9
11
  # to describe all types.
10
12
  #
11
13
  # This class, the `BindingsFactory` is a concrete Ruby API for constructing instances of classes in the model.
@@ -14,14 +16,14 @@
14
16
  # --------------
15
17
  # The typical usage of the factory is to call {named_bindings} which creates a container of bindings wrapped in a *build object*
16
18
  # equipped with convenience methods to define the details of the just created named bindings.
17
- # The returned builder is an instance of {Puppet::Pops::Binder::BindingsFactory::BindingsContainerBuilder BindingsContainerBuilder}.
19
+ # The returned builder is an instance of {BindingsFactory::BindingsContainerBuilder BindingsContainerBuilder}.
18
20
  #
19
21
  # Binding
20
22
  # -------
21
23
  # A Binding binds a type/name key to a producer of a value. A binding is conveniently created by calling `bind` on a
22
24
  # `BindingsContainerBuilder`. The call to bind, produces a binding wrapped in a build object equipped with convenience methods
23
25
  # to define the details of the just created binding. The returned builder is an instance of
24
- # {Puppet::Pops::Binder::BindingsFactory::BindingsBuilder BindingsBuilder}.
26
+ # {BindingsFactory::BindingsBuilder BindingsBuilder}.
25
27
  #
26
28
  # Multibinding
27
29
  # ------------
@@ -36,7 +38,7 @@
36
38
  #
37
39
  # It is intended that a user defining bindings in Ruby should be able to use the builder object methods for the majority of tasks.
38
40
  # If something advanced is wanted, use of one of the helper class methods on the BuildingsFactory, and/or the
39
- # {Puppet::Pops::Types::TypeCalculator TypeCalculator} will be required to create and configure objects that are not handled by
41
+ # {Types::TypeCalculator TypeCalculator} will be required to create and configure objects that are not handled by
40
42
  # the methods in the builder objects.
41
43
  #
42
44
  # Chaining of calls
@@ -76,7 +78,7 @@
76
78
  # end.model
77
79
  #
78
80
  # @example Create a NamedBinding with content
79
- # result = Puppet::Pops::Binder::BindingsFactory.named_bindings("mymodule::mybindings") do
81
+ # result = BindingsFactory.named_bindings("mymodule::mybindings") do
80
82
  # bind.name("foo").to(42)
81
83
  # bind.string.name("site url").to("http://www.example.com")
82
84
  # end
@@ -84,12 +86,12 @@
84
86
  #
85
87
  # @api public
86
88
  #
87
- module Puppet::Pops::Binder::BindingsFactory
89
+ module BindingsFactory
88
90
 
89
- # Alias for the {Puppet::Pops::Types::TypeFactory TypeFactory}. This is also available as the method
91
+ # Alias for the {Types::TypeFactory TypeFactory}. This is also available as the method
90
92
  # `type_factory`.
91
93
  #
92
- T = Puppet::Pops::Types::TypeFactory
94
+ T = Types::TypeFactory
93
95
 
94
96
  # Abstract base class for bindings object builders.
95
97
  # Supports delegation of method calls to the BindingsFactory class methods for all methods not implemented
@@ -101,7 +103,7 @@ module Puppet::Pops::Binder::BindingsFactory
101
103
  # The built model object.
102
104
  attr_reader :model
103
105
 
104
- # @param binding [Puppet::Pops::Binder::Bindings::AbstractBinding] The binding to build.
106
+ # @param binding [Bindings::AbstractBinding] The binding to build.
105
107
  # @api public
106
108
  def initialize(binding)
107
109
  @model = binding
@@ -113,7 +115,7 @@ module Puppet::Pops::Binder::BindingsFactory
113
115
  # @api private
114
116
  #
115
117
  def method_missing(meth, *args, &block)
116
- factory = Puppet::Pops::Binder::BindingsFactory
118
+ factory = BindingsFactory
117
119
  if factory.respond_to?(meth)
118
120
  factory.send(meth, *args, &block)
119
121
  else
@@ -132,7 +134,7 @@ module Puppet::Pops::Binder::BindingsFactory
132
134
  # @api public
133
135
  #
134
136
  def bind(&block)
135
- binding = Puppet::Pops::Binder::Bindings::Binding.new()
137
+ binding = Bindings::Binding.new()
136
138
  model.addBindings(binding)
137
139
  builder = BindingsBuilder.new(binding)
138
140
  builder.instance_eval(&block) if block_given?
@@ -146,7 +148,7 @@ module Puppet::Pops::Binder::BindingsFactory
146
148
  # @api public
147
149
  #
148
150
  def multibind(id, &block)
149
- binding = Puppet::Pops::Binder::Bindings::Multibinding.new()
151
+ binding = Bindings::Multibinding.new()
150
152
  binding.id = id
151
153
  model.addBindings(binding)
152
154
  builder = MultibindingsBuilder.new(binding)
@@ -161,7 +163,7 @@ module Puppet::Pops::Binder::BindingsFactory
161
163
  #
162
164
  class BindingsBuilder < AbstractBuilder
163
165
 
164
- # @param binding [Puppet::Pops::Binder::Bindings::AbstractBinding] the binding to build.
166
+ # @param binding [Bindings::AbstractBinding] the binding to build.
165
167
  # @api public
166
168
  def initialize(binding)
167
169
  super binding
@@ -219,7 +221,7 @@ module Puppet::Pops::Binder::BindingsFactory
219
221
  # @example creating a Hash with Integer key and Array[Integer] element type
220
222
  # tc = type_factory
221
223
  # type(tc.hash(tc.array_of(tc.integer), tc.integer)
222
- # @param type [Puppet::Pops::Types::PAnyType] the type to set for the binding
224
+ # @param type [Types::PAnyType] the type to set for the binding
223
225
  # @api public
224
226
  #
225
227
  def type(type)
@@ -228,71 +230,71 @@ module Puppet::Pops::Binder::BindingsFactory
228
230
  end
229
231
 
230
232
  # Sets the type of the binding to Integer.
231
- # @return [Puppet::Pops::Types::PIntegerType] the type
233
+ # @return [Types::PIntegerType] the type
232
234
  # @api public
233
235
  def integer()
234
236
  type(T.integer())
235
237
  end
236
238
 
237
239
  # Sets the type of the binding to Float.
238
- # @return [Puppet::Pops::Types::PFloatType] the type
240
+ # @return [Types::PFloatType] the type
239
241
  # @api public
240
242
  def float()
241
243
  type(T.float())
242
244
  end
243
245
 
244
246
  # Sets the type of the binding to Boolean.
245
- # @return [Puppet::Pops::Types::PBooleanType] the type
247
+ # @return [Types::PBooleanType] the type
246
248
  # @api public
247
249
  def boolean()
248
250
  type(T.boolean())
249
251
  end
250
252
 
251
253
  # Sets the type of the binding to String.
252
- # @return [Puppet::Pops::Types::PStringType] the type
254
+ # @return [Types::PStringType] the type
253
255
  # @api public
254
256
  def string()
255
257
  type(T.string())
256
258
  end
257
259
 
258
260
  # Sets the type of the binding to Pattern.
259
- # @return [Puppet::Pops::Types::PRegexpType] the type
261
+ # @return [Types::PRegexpType] the type
260
262
  # @api public
261
263
  def pattern()
262
264
  type(T.pattern())
263
265
  end
264
266
 
265
267
  # Sets the type of the binding to the abstract type Scalar.
266
- # @return [Puppet::Pops::Types::PScalarType] the type
268
+ # @return [Types::PScalarType] the type
267
269
  # @api public
268
270
  def scalar()
269
271
  type(T.scalar())
270
272
  end
271
273
 
272
274
  # Sets the type of the binding to the abstract type Data.
273
- # @return [Puppet::Pops::Types::PDataType] the type
275
+ # @return [Types::PDataType] the type
274
276
  # @api public
275
277
  def data()
276
278
  type(T.data())
277
279
  end
278
280
 
279
281
  # Sets the type of the binding to Array[Data].
280
- # @return [Puppet::Pops::Types::PArrayType] the type
282
+ # @return [Types::PArrayType] the type
281
283
  # @api public
282
284
  def array_of_data()
283
285
  type(T.array_of_data())
284
286
  end
285
287
 
286
288
  # Sets the type of the binding to Array[T], where T is given.
287
- # @param t [Puppet::Pops::Types::PAnyType] the type of the elements of the array
288
- # @return [Puppet::Pops::Types::PArrayType] the type
289
+ # @param t [Types::PAnyType] the type of the elements of the array
290
+ # @return [Types::PArrayType] the type
289
291
  # @api public
290
292
  def array_of(t)
291
293
  type(T.array_of(t))
292
294
  end
293
295
 
294
296
  # Sets the type of the binding to Hash[Literal, Data].
295
- # @return [Puppet::Pops::Types::PHashType] the type
297
+ # @return [Types::PHashType] the type
296
298
  # @api public
297
299
  def hash_of_data()
298
300
  type(T.hash_of_data())
@@ -301,7 +303,7 @@ module Puppet::Pops::Binder::BindingsFactory
301
303
  # Sets type of the binding to `Hash[Literal, t]`.
302
304
  # To also limit the key type, use {#type} and give it a fully specified
303
305
  # hash using {#type_factory} and then `hash_of(value_type, key_type)`.
304
- # @return [Puppet::Pops::Types::PHashType] the type
306
+ # @return [Types::PHashType] the type
305
307
  # @api public
306
308
  def hash_of(t)
307
309
  type(T.hash_of(t))
@@ -310,7 +312,7 @@ module Puppet::Pops::Binder::BindingsFactory
310
312
  # Sets the type of the binding based on the given argument.
311
313
  # @overload instance_of(t)
312
314
  # The same as calling {#type} with `t`.
313
- # @param t [Puppet::Pops::Types::PAnyType] the type
315
+ # @param t [Types::PAnyType] the type
314
316
  # @overload instance_of(o)
315
317
  # Infers the type from the given Ruby object and sets that as the type - i.e. "set the type
316
318
  # of the binding to be that of the given data object".
@@ -337,7 +339,7 @@ module Puppet::Pops::Binder::BindingsFactory
337
339
  # The type factory is also available via the constant {T}.
338
340
  # @api public
339
341
  def type_factory
340
- Puppet::Pops::Types::TypeFactory
342
+ Types::TypeFactory
341
343
  end
342
344
 
343
345
  # Sets the binding's producer to a singleton producer, if given argument is a value, a literal producer is created for it.
@@ -355,16 +357,16 @@ module Puppet::Pops::Binder::BindingsFactory
355
357
  def to(producer, *args)
356
358
  case producer
357
359
  when Class
358
- producer = Puppet::Pops::Binder::BindingsFactory.instance_producer(producer.name, *args)
359
- when Puppet::Pops::Model::Program
360
+ producer = BindingsFactory.instance_producer(producer.name, *args)
361
+ when Model::Program
360
362
  # program is not an expression
361
- producer = Puppet::Pops::Binder::BindingsFactory.evaluating_producer(producer.body)
362
- when Puppet::Pops::Model::Expression
363
- producer = Puppet::Pops::Binder::BindingsFactory.evaluating_producer(producer)
364
- when Puppet::Pops::Binder::Bindings::ProducerDescriptor
363
+ producer = BindingsFactory.evaluating_producer(producer.body)
364
+ when Model::Expression
365
+ producer = BindingsFactory.evaluating_producer(producer)
366
+ when Bindings::ProducerDescriptor
365
367
  else
366
368
  # If given producer is not a producer, create a literal producer
367
- producer = Puppet::Pops::Binder::BindingsFactory.literal_producer(producer)
369
+ producer = BindingsFactory.literal_producer(producer)
368
370
  end
369
371
  model.producer = producer
370
372
  self
@@ -393,7 +395,7 @@ module Puppet::Pops::Binder::BindingsFactory
393
395
  # Help by setting the type - since if an to_instance is bound, the type is know. This avoids having
394
396
  # to specify the same thing twice.
395
397
  self.instance_of(type)
396
- model.producer = Puppet::Pops::Binder::BindingsFactory.instance_producer(class_name, *args)
398
+ model.producer = BindingsFactory.instance_producer(class_name, *args)
397
399
  end
398
400
 
399
401
  # Sets the binding's producer to a singleton producer
@@ -401,30 +403,30 @@ module Puppet::Pops::Binder::BindingsFactory
401
403
  # Sets the producer to an instantiated producer. The resulting model can not be serialized as a consequence as there
402
404
  # is no meta-model describing the specialized producer. Use this only in exceptional cases, or where there is never the
403
405
  # need to serialize the model.
404
- # @param a_producer [Puppet::Pops::Binder::Producers::Producer] an instantiated producer, not serializeable !
406
+ # @param a_producer [Producers::Producer] an instantiated producer, not serializeable !
405
407
  #
406
408
  # @overload to_producer(a_class, *args)
407
409
  # @param a_class [Class] the class to create an instance of
408
410
  # @param args [Object] the arguments to the given class' new
409
411
  #
410
412
  # @overload to_producer(a_producer_descriptor)
411
- # @param a_producer_descriptor [Puppet::Pops::Binder::Bindings::ProducerDescriptor] a descriptor
412
- # producing Puppet::Pops::Binder::Producers::Producer
413
+ # @param a_producer_descriptor [Bindings::ProducerDescriptor] a descriptor
414
+ # producing Producers::Producer
413
415
  #
414
416
  # @api public
415
417
  #
416
418
  def to_producer(producer, *args)
417
419
  case producer
418
420
  when Class
419
- producer = Puppet::Pops::Binder::BindingsFactory.instance_producer(producer.name, *args)
420
- when Puppet::Pops::Binder::Bindings::ProducerDescriptor
421
- when Puppet::Pops::Binder::Producers::Producer
421
+ producer = BindingsFactory.instance_producer(producer.name, *args)
422
+ when Bindings::ProducerDescriptor
423
+ when Producers::Producer
422
424
  # a custom producer instance
423
- producer = Puppet::Pops::Binder::BindingsFactory.literal_producer(producer)
425
+ producer = BindingsFactory.literal_producer(producer)
424
426
  else
425
427
  raise ArgumentError, "Given producer argument is none of a producer descriptor, a class, or a producer"
426
428
  end
427
- metaproducer = Puppet::Pops::Binder::BindingsFactory.producer_producer(producer)
429
+ metaproducer = BindingsFactory.producer_producer(producer)
428
430
  model.producer = metaproducer
429
431
  self
430
432
  end
@@ -436,34 +438,34 @@ module Puppet::Pops::Binder::BindingsFactory
436
438
  # Sets the producer to an instantiated producer. The resulting model can not be serialized as a consequence as there
437
439
  # is no meta-model describing the specialized producer. Use this only in exceptional cases, or where there is never the
438
440
  # need to serialize the model.
439
- # @param a_producer [Puppet::Pops::Binder::Producers::Producer] an instantiated producer, not serializeable !
441
+ # @param a_producer [Producers::Producer] an instantiated producer, not serializeable !
440
442
  #
441
443
  # @overload to_producer(a_class, *args)
442
444
  # @param a_class [Class] the class to create an instance of
443
445
  # @param args [Object] the arguments to the given class' new
444
446
  #
445
447
  # @overload to_producer(a_producer_descriptor)
446
- # @param a_producer_descriptor [Puppet::Pops::Binder::Bindings::ProducerDescriptor] a descriptor
447
- # producing Puppet::Pops::Binder::Producers::Producer
448
+ # @param a_producer_descriptor [Bindings::ProducerDescriptor] a descriptor
449
+ # producing Producers::Producer
448
450
  #
449
451
  # @api public
450
452
  #
451
453
  def to_producer_series(producer, *args)
452
454
  case producer
453
455
  when Class
454
- producer = Puppet::Pops::Binder::BindingsFactory.instance_producer(producer.name, *args)
455
- when Puppet::Pops::Binder::Bindings::ProducerDescriptor
456
- when Puppet::Pops::Binder::Producers::Producer
456
+ producer = BindingsFactory.instance_producer(producer.name, *args)
457
+ when Bindings::ProducerDescriptor
458
+ when Producers::Producer
457
459
  # a custom producer instance
458
- producer = Puppet::Pops::Binder::BindingsFactory.literal_producer(producer)
460
+ producer = BindingsFactory.literal_producer(producer)
459
461
  else
460
462
  raise ArgumentError, "Given producer argument is none of a producer descriptor, a class, or a producer"
461
463
  end
462
- non_caching = Puppet::Pops::Binder::Bindings::NonCachingProducerDescriptor.new()
464
+ non_caching = Bindings::NonCachingProducerDescriptor.new()
463
465
  non_caching.producer = producer
464
- metaproducer = Puppet::Pops::Binder::BindingsFactory.producer_producer(non_caching)
466
+ metaproducer = BindingsFactory.producer_producer(non_caching)
465
467
 
466
- non_caching = Puppet::Pops::Binder::Bindings::NonCachingProducerDescriptor.new()
468
+ non_caching = Bindings::NonCachingProducerDescriptor.new()
467
469
  non_caching.producer = metaproducer
468
470
 
469
471
  model.producer = non_caching
@@ -483,13 +485,13 @@ module Puppet::Pops::Binder::BindingsFactory
483
485
  def to_series_of(producer, *args)
484
486
  case producer
485
487
  when Class
486
- producer = Puppet::Pops::Binder::BindingsFactory.instance_producer(producer.name, *args)
487
- when Puppet::Pops::Binder::Bindings::ProducerDescriptor
488
+ producer = BindingsFactory.instance_producer(producer.name, *args)
489
+ when Bindings::ProducerDescriptor
488
490
  else
489
491
  # If given producer is not a producer, create a literal producer
490
- producer = Puppet::Pops::Binder::BindingsFactory.literal_producer(producer)
492
+ producer = BindingsFactory.literal_producer(producer)
491
493
  end
492
- non_caching = Puppet::Pops::Binder::Bindings::NonCachingProducerDescriptor.new()
494
+ non_caching = Bindings::NonCachingProducerDescriptor.new()
493
495
  non_caching.producer = producer
494
496
  model.producer = non_caching
495
497
  self
@@ -503,9 +505,9 @@ module Puppet::Pops::Binder::BindingsFactory
503
505
  def to_lookup_of(type, name=nil)
504
506
  unless name
505
507
  name = type
506
- type = Puppet::Pops::Types::TypeFactory.data()
508
+ type = Types::TypeFactory.data()
507
509
  end
508
- model.producer = Puppet::Pops::Binder::BindingsFactory.lookup_producer(type, name)
510
+ model.producer = BindingsFactory.lookup_producer(type, name)
509
511
  self
510
512
  end
511
513
 
@@ -517,7 +519,7 @@ module Puppet::Pops::Binder::BindingsFactory
517
519
  # @api public
518
520
  #
519
521
  def to_hash_lookup_of(type, name, key)
520
- model.producer = Puppet::Pops::Binder::BindingsFactory.hash_lookup_producer(type, name, key)
522
+ model.producer = BindingsFactory.hash_lookup_producer(type, name, key)
521
523
  self
522
524
  end
523
525
 
@@ -536,17 +538,17 @@ module Puppet::Pops::Binder::BindingsFactory
536
538
  if entry.is_a?(Array)
537
539
  case entry.size
538
540
  when 2
539
- Puppet::Pops::Binder::BindingsFactory.lookup_producer(entry[0], entry[1])
541
+ BindingsFactory.lookup_producer(entry[0], entry[1])
540
542
  when 1
541
- Puppet::Pops::Binder::BindingsFactory.lookup_producer(Puppet::Pops::Types::TypeFactory.data(), entry[0])
543
+ BindingsFactory.lookup_producer(Types::TypeFactory.data(), entry[0])
542
544
  else
543
545
  raise ArgumentError, "Not an array of [type, name], name, or [name]"
544
546
  end
545
547
  else
546
- Puppet::Pops::Binder::BindingsFactory.lookup_producer(T.data(), entry)
548
+ BindingsFactory.lookup_producer(T.data(), entry)
547
549
  end
548
550
  end
549
- model.producer = Puppet::Pops::Binder::BindingsFactory.first_found_producer(*producers)
551
+ model.producer = BindingsFactory.first_found_producer(*producers)
550
552
  self
551
553
  end
552
554
 
@@ -560,7 +562,7 @@ module Puppet::Pops::Binder::BindingsFactory
560
562
  # @api public
561
563
  def producer_options(options)
562
564
  options.each do |k, v|
563
- arg = Puppet::Pops::Binder::Bindings::NamedArgument.new()
565
+ arg = Bindings::NamedArgument.new()
564
566
  arg.name = k.to_s
565
567
  arg.value = v
566
568
  model.addProducer_args(arg)
@@ -574,11 +576,11 @@ module Puppet::Pops::Binder::BindingsFactory
574
576
  #
575
577
  # @api public
576
578
  class MultibindingsBuilder < BindingsBuilder
577
- # Constraints type to be one of {Puppet::Pops::Types::PArrayType PArrayType}, or {Puppet::Pops::Types::PHashType PHashType}.
579
+ # Constraints type to be one of {Types::PArrayType PArrayType}, or {Types::PHashType PHashType}.
578
580
  # @raise [ArgumentError] if type constraint is not met.
579
581
  # @api public
580
582
  def type(type)
581
- unless type.class == Puppet::Pops::Types::PArrayType || type.class == Puppet::Pops::Types::PHashType
583
+ unless type.class == Types::PArrayType || type.class == Types::PHashType
582
584
  raise ArgumentError, "Wrong type; only PArrayType, or PHashType allowed, got '#{type.to_s}'"
583
585
  end
584
586
  model.type = type
@@ -597,11 +599,11 @@ module Puppet::Pops::Binder::BindingsFactory
597
599
  # A ContributedBindings is used by bindings providers to return a set of named bindings.
598
600
  #
599
601
  # @param name [String] the name of the contributed bindings (for human use in messages/logs only)
600
- # @param named_bindings [Puppet::Pops::Binder::Bindings::NamedBindings, Array<Puppet::Pops::Binder::Bindings::NamedBindings>] the
602
+ # @param named_bindings [Bindings::NamedBindings, Array<Bindings::NamedBindings>] the
601
603
  # named bindings to include
602
604
  #
603
605
  def self.contributed_bindings(name, named_bindings)
604
- cb = Puppet::Pops::Binder::Bindings::ContributedBindings.new()
606
+ cb = Bindings::ContributedBindings.new()
605
607
  cb.name = name
606
608
  named_bindings = [named_bindings] unless named_bindings.is_a?(Array)
607
609
  named_bindings.each {|b| cb.addBindings(b) }
@@ -616,7 +618,7 @@ module Puppet::Pops::Binder::BindingsFactory
616
618
  # @api public
617
619
  #
618
620
  def self.named_bindings(name, &block)
619
- binding = Puppet::Pops::Binder::Bindings::NamedBindings.new()
621
+ binding = Bindings::NamedBindings.new()
620
622
  binding.name = name
621
623
  builder = BindingsContainerBuilder.new(binding)
622
624
  builder.instance_eval(&block) if block_given?
@@ -629,7 +631,7 @@ module Puppet::Pops::Binder::BindingsFactory
629
631
  # @api private
630
632
  #
631
633
  def self.safe_named_bindings(name, scope, &block)
632
- binding = Puppet::Pops::Binder::Bindings::NamedBindings.new()
634
+ binding = Bindings::NamedBindings.new()
633
635
  binding.name = name
634
636
  anon = Class.new(BindingsContainerBuilder) do
635
637
  def initialize(b)
@@ -649,33 +651,33 @@ module Puppet::Pops::Binder::BindingsFactory
649
651
 
650
652
  # Creates a literal/constant producer
651
653
  # @param value [Object] the value to produce
652
- # @return [Puppet::Pops::Binder::Bindings::ProducerDescriptor] a producer description
654
+ # @return [Bindings::ProducerDescriptor] a producer description
653
655
  # @api public
654
656
  #
655
657
  def self.literal_producer(value)
656
- producer = Puppet::Pops::Binder::Bindings::ConstantProducerDescriptor.new()
658
+ producer = Bindings::ConstantProducerDescriptor.new()
657
659
  producer.value = value
658
660
  producer
659
661
  end
660
662
 
661
663
  # Creates a non caching producer
662
- # @param producer [Puppet::Pops::Binder::Bindings::Producer] the producer to make non caching
663
- # @return [Puppet::Pops::Binder::Bindings::ProducerDescriptor] a producer description
664
+ # @param producer [Bindings::Producer] the producer to make non caching
665
+ # @return [Bindings::ProducerDescriptor] a producer description
664
666
  # @api public
665
667
  #
666
668
  def self.non_caching_producer(producer)
667
- p = Puppet::Pops::Binder::Bindings::NonCachingProducerDescriptor.new()
669
+ p = Bindings::NonCachingProducerDescriptor.new()
668
670
  p.producer = producer
669
671
  p
670
672
  end
671
673
 
672
674
  # Creates a producer producer
673
- # @param producer [Puppet::Pops::Binder::Bindings::Producer] a producer producing a Producer.
674
- # @return [Puppet::Pops::Binder::Bindings::ProducerDescriptor] a producer description
675
+ # @param producer [Bindings::Producer] a producer producing a Producer.
676
+ # @return [Bindings::ProducerDescriptor] a producer description
675
677
  # @api public
676
678
  #
677
679
  def self.producer_producer(producer)
678
- p = Puppet::Pops::Binder::Bindings::ProducerProducerDescriptor.new()
680
+ p = Bindings::ProducerProducerDescriptor.new()
679
681
  p.producer = producer
680
682
  p
681
683
  end
@@ -688,23 +690,23 @@ module Puppet::Pops::Binder::BindingsFactory
688
690
  #
689
691
  # @param class_name [String] the name of the class
690
692
  # @param args[Object] arguments to the class' `new` method.
691
- # @return [Puppet::Pops::Binder::Bindings::ProducerDescriptor] a producer description
693
+ # @return [Bindings::ProducerDescriptor] a producer description
692
694
  # @api public
693
695
  #
694
696
  def self.instance_producer(class_name, *args)
695
- p = Puppet::Pops::Binder::Bindings::InstanceProducerDescriptor.new()
697
+ p = Bindings::InstanceProducerDescriptor.new()
696
698
  p.class_name = class_name
697
699
  args.each {|a| p.addArguments(a) }
698
700
  p
699
701
  end
700
702
 
701
703
  # Creates a Producer that looks up a value.
702
- # @param type [Puppet::Pops::Types::PAnyType] the type to lookup
704
+ # @param type [Types::PAnyType] the type to lookup
703
705
  # @param name [String] the name to lookup
704
- # @return [Puppet::Pops::Binder::Bindings::ProducerDescriptor] a producer description
706
+ # @return [Bindings::ProducerDescriptor] a producer description
705
707
  # @api public
706
708
  def self.lookup_producer(type, name)
707
- p = Puppet::Pops::Binder::Bindings::LookupProducerDescriptor.new()
709
+ p = Bindings::LookupProducerDescriptor.new()
708
710
  p.type = type
709
711
  p.name = name
710
712
  p
@@ -712,14 +714,14 @@ module Puppet::Pops::Binder::BindingsFactory
712
714
 
713
715
  # Creates a Hash lookup producer that looks up a hash value, and then a key in the hash.
714
716
  #
715
- # @return [Puppet::Pops::Binder::Bindings::ProducerDescriptor] a producer description
716
- # @param type [Puppet::Pops::Types::PAnyType] the type to lookup (i.e. a Hash of some key/value type).
717
+ # @return [Bindings::ProducerDescriptor] a producer description
718
+ # @param type [Types::PAnyType] the type to lookup (i.e. a Hash of some key/value type).
717
719
  # @param name [String] the name to lookup
718
720
  # @param key [Object] the key to lookup in the looked up hash (type should comply with given key type).
719
721
  # @api public
720
722
  #
721
723
  def self.hash_lookup_producer(type, name, key)
722
- p = Puppet::Pops::Binder::Bindings::HashLookupProducerDescriptor.new()
724
+ p = Bindings::HashLookupProducerDescriptor.new()
723
725
  p.type = type
724
726
  p.name = name
725
727
  p.key = key
@@ -728,29 +730,29 @@ module Puppet::Pops::Binder::BindingsFactory
728
730
 
729
731
  # Creates a first-found producer that looks up from a given series of keys. The first found looked up
730
732
  # value will be produced.
731
- # @param producers [Array<Puppet::Pops::Binder::Bindings::ProducerDescriptor>] the producers to consult in given order
732
- # @return [Puppet::Pops::Binder::Bindings::ProducerDescriptor] a producer descriptor
733
+ # @param producers [Array<Bindings::ProducerDescriptor>] the producers to consult in given order
734
+ # @return [Bindings::ProducerDescriptor] a producer descriptor
733
735
  # @api public
734
736
  def self.first_found_producer(*producers)
735
- p = Puppet::Pops::Binder::Bindings::FirstFoundProducerDescriptor.new()
737
+ p = Bindings::FirstFoundProducerDescriptor.new()
736
738
  producers.each {|p2| p.addProducers(p2) }
737
739
  p
738
740
  end
739
741
 
740
742
  # Creates an evaluating producer that evaluates a puppet expression.
741
- # A puppet expression is most conveniently created by using the {Puppet::Pops::Parser::EvaluatingParser EvaluatingParser} as it performs
743
+ # A puppet expression is most conveniently created by using the {Parser::EvaluatingParser EvaluatingParser} as it performs
742
744
  # all set up and validation of the parsed source. Two convenience methods are used to parse an expression, or parse a ruby string
743
745
  # as a puppet string. See methods {puppet_expression}, {puppet_string} and {parser} for more information.
744
746
  #
745
747
  # @example producing a puppet expression
746
748
  # expr = puppet_string("Interpolated $fqdn", __FILE__)
747
749
  #
748
- # @param expression [Puppet::Pops::Model::Expression] a puppet DSL expression as producer by the eparser.
749
- # @return [Puppet::Pops::Binder::Bindings::ProducerDescriptor] a producer descriptor
750
+ # @param expression [Model::Expression] a puppet DSL expression as producer by the eparser.
751
+ # @return [Bindings::ProducerDescriptor] a producer descriptor
750
752
  # @api public
751
753
  #
752
754
  def self.evaluating_producer(expression)
753
- p = Puppet::Pops::Binder::Bindings::EvaluatingProducerDescriptor.new()
755
+ p = Bindings::EvaluatingProducerDescriptor.new()
754
756
  p.expression = expression
755
757
  p
756
758
  end
@@ -760,32 +762,32 @@ module Puppet::Pops::Binder::BindingsFactory
760
762
  # @api public
761
763
  #
762
764
  def self.named_layer(name, *bindings)
763
- result = Puppet::Pops::Binder::Bindings::NamedLayer.new()
765
+ result = Bindings::NamedLayer.new()
764
766
  result.name = name
765
767
  bindings.each { |b| result.addBindings(b) }
766
768
  result
767
769
  end
768
770
 
769
771
  # Create a LayeredBindings. This is used by the bindings system to create a model of all given layers.
770
- # @param named_layers [Puppet::Pops::Binder::Bindings::NamedLayer] one or more named layers
771
- # @return [Puppet::Pops::Binder::Bindings::LayeredBindings] the constructed layered bindings.
772
+ # @param named_layers [Bindings::NamedLayer] one or more named layers
773
+ # @return [Bindings::LayeredBindings] the constructed layered bindings.
772
774
  # @api public
773
775
  #
774
776
  def self.layered_bindings(*named_layers)
775
- result = Puppet::Pops::Binder::Bindings::LayeredBindings.new()
777
+ result = Bindings::LayeredBindings.new()
776
778
  named_layers.each {|b| result.addLayers(b) }
777
779
  result
778
780
  end
779
781
 
780
- # @return [Puppet::Pops::Parser::EvaluatingParser] a parser for puppet expressions
782
+ # @return [Parser::EvaluatingParser] a parser for puppet expressions
781
783
  def self.parser
782
- @parser ||= Puppet::Pops::Parser::EvaluatingParser.new()
784
+ @parser ||= Parser::EvaluatingParser.new()
783
785
  end
784
786
 
785
787
  # Parses and produces a puppet expression from the given string.
786
788
  # @param string [String] puppet source e.g. "1 + 2"
787
789
  # @param source_file [String] the source location, typically `__File__`
788
- # @return [Puppet::Pops::Model::Expression] an expression (that can be bound)
790
+ # @return [Model::Expression] an expression (that can be bound)
789
791
  # @api public
790
792
  #
791
793
  def self.puppet_expression(string, source_file)
@@ -800,10 +802,12 @@ module Puppet::Pops::Binder::BindingsFactory
800
802
  #
801
803
  # @param string [String] puppet source e.g. "On node $!{fqdn}"
802
804
  # @param source_file [String] the source location, typically `__File__`
803
- # @return [Puppet::Pops::Model::Expression] an expression (that can be bound)
805
+ # @return [Model::Expression] an expression (that can be bound)
804
806
  # @api public
805
807
  #
806
808
  def self.puppet_string(string, source_file)
807
809
  parser.parse_string(parser.quote(string), source_file).current
808
810
  end
809
811
  end
812
+ end
813
+ end