puppet 4.1.0 → 4.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1628) hide show
  1. checksums.yaml +4 -4
  2. data/COMMITTERS.md +2 -2
  3. data/CONTRIBUTING.md +34 -10
  4. data/Gemfile +26 -9
  5. data/LICENSE +3 -3
  6. data/MAINTAINERS +71 -0
  7. data/README.md +9 -11
  8. data/Rakefile +35 -0
  9. data/conf/auth.conf +2 -2
  10. data/conf/puppet.conf +1 -1
  11. data/ext/README.environment +1 -1
  12. data/ext/build_defaults.yaml +2 -2
  13. data/ext/debian/README.source +1 -1
  14. data/ext/debian/control +3 -5
  15. data/ext/debian/copyright +4 -4
  16. data/ext/debian/puppet.init +0 -1
  17. data/ext/debian/puppet.logrotate +14 -5
  18. data/ext/debian/puppetmaster.README.debian +11 -9
  19. data/ext/emacs/puppet-mode.el +1 -1
  20. data/ext/envpuppet +2 -2
  21. data/ext/ips/puppetagent.xml +1 -1
  22. data/ext/ips/puppetmaster.xml +1 -1
  23. data/ext/osx/puppet.plist +30 -0
  24. data/ext/project_data.yaml +31 -15
  25. data/ext/puppet-test +3 -3
  26. data/ext/rack/example-passenger-vhost.conf +1 -1
  27. data/ext/redhat/client.init +67 -17
  28. data/ext/redhat/client.sysconfig +1 -10
  29. data/ext/redhat/logrotate +15 -3
  30. data/ext/redhat/puppet.spec.erb +6 -11
  31. data/ext/redhat/server.init +1 -1
  32. data/ext/regexp_nodes/regexp_nodes.rb +1 -1
  33. data/ext/solaris/pkginfo +1 -1
  34. data/ext/solaris/smf/puppet +44 -0
  35. data/ext/solaris/smf/puppet.xml +44 -0
  36. data/ext/suse/client.init +30 -33
  37. data/ext/suse/puppet.spec +2 -2
  38. data/ext/suse/server.init +2 -2
  39. data/ext/systemd/puppet.service +13 -1
  40. data/ext/upload_facts.rb +1 -1
  41. data/ext/windows/puppet_interactive.bat +6 -0
  42. data/ext/windows/puppet_shell.bat +9 -0
  43. data/ext/windows/run_puppet_interactive.bat +9 -0
  44. data/ext/windows/service/daemon.rb +2 -1
  45. data/ext/yaml_nodes.rb +1 -1
  46. data/install.rb +98 -65
  47. data/lib/hiera/puppet_function.rb +17 -18
  48. data/lib/hiera/scope.rb +12 -14
  49. data/lib/hiera_puppet.rb +6 -14
  50. data/lib/puppet/agent/locker.rb +11 -2
  51. data/lib/puppet/agent.rb +12 -27
  52. data/lib/puppet/application/agent.rb +35 -19
  53. data/lib/puppet/application/apply.rb +46 -14
  54. data/lib/puppet/application/ca.rb +1 -0
  55. data/lib/puppet/application/cert.rb +52 -3
  56. data/lib/puppet/application/device.rb +2 -2
  57. data/lib/puppet/application/face_base.rb +4 -0
  58. data/lib/puppet/application/filebucket.rb +79 -5
  59. data/lib/puppet/application/generate.rb +5 -0
  60. data/lib/puppet/application/inspect.rb +5 -2
  61. data/lib/puppet/application/lookup.rb +344 -0
  62. data/lib/puppet/application/master.rb +7 -3
  63. data/lib/puppet/application/resource.rb +2 -6
  64. data/lib/puppet/application.rb +20 -4
  65. data/lib/puppet/application_support.rb +1 -1
  66. data/lib/puppet/compilable_resource_type.rb +15 -0
  67. data/lib/puppet/configurer/plugin_handler.rb +7 -5
  68. data/lib/puppet/configurer.rb +177 -37
  69. data/lib/puppet/context/trusted_information.rb +21 -1
  70. data/lib/puppet/context.rb +16 -1
  71. data/lib/puppet/daemon.rb +17 -13
  72. data/lib/puppet/data_binding.rb +4 -2
  73. data/lib/puppet/data_providers/data_adapter.rb +14 -68
  74. data/lib/puppet/data_providers/data_function_support.rb +13 -26
  75. data/lib/puppet/data_providers/function_env_data_provider.rb +7 -9
  76. data/lib/puppet/data_providers/function_module_data_provider.rb +7 -22
  77. data/lib/puppet/data_providers/hiera_config.rb +151 -0
  78. data/lib/puppet/data_providers/hiera_env_data_provider.rb +25 -0
  79. data/lib/puppet/data_providers/hiera_interpolate.rb +21 -0
  80. data/lib/puppet/data_providers/hiera_module_data_provider.rb +30 -0
  81. data/lib/puppet/data_providers/hiera_support.rb +42 -0
  82. data/lib/puppet/data_providers/json_data_provider_factory.rb +38 -0
  83. data/lib/puppet/data_providers/yaml_data_provider_factory.rb +40 -0
  84. data/lib/puppet/data_providers.rb +17 -14
  85. data/lib/puppet/defaults.rb +273 -59
  86. data/lib/puppet/environments.rb +104 -9
  87. data/lib/puppet/error.rb +4 -0
  88. data/lib/puppet/etc.rb +125 -0
  89. data/lib/puppet/external/dot.rb +1 -1
  90. data/lib/puppet/face/ca.rb +6 -1
  91. data/lib/puppet/face/catalog.rb +1 -1
  92. data/lib/puppet/face/certificate.rb +7 -1
  93. data/lib/puppet/face/certificate_request.rb +2 -0
  94. data/lib/puppet/face/certificate_revocation_list.rb +2 -0
  95. data/lib/puppet/face/config.rb +2 -2
  96. data/lib/puppet/face/epp.rb +63 -17
  97. data/lib/puppet/face/file.rb +3 -0
  98. data/lib/puppet/face/generate.rb +64 -0
  99. data/lib/puppet/face/help/face.erb +3 -0
  100. data/lib/puppet/face/help/man.erb +1 -1
  101. data/lib/puppet/face/help.rb +35 -27
  102. data/lib/puppet/face/key.rb +1 -0
  103. data/lib/puppet/face/man.rb +5 -3
  104. data/lib/puppet/face/module/changes.rb +2 -1
  105. data/lib/puppet/face/module/generate.rb +1 -1
  106. data/lib/puppet/face/module/install.rb +6 -6
  107. data/lib/puppet/face/parser.rb +12 -9
  108. data/lib/puppet/face/plugin.rb +7 -14
  109. data/lib/puppet/face/status.rb +4 -1
  110. data/lib/puppet/feature/base.rb +9 -2
  111. data/lib/puppet/feature/cfacter.rb +1 -0
  112. data/lib/puppet/feature/cfpropertylist.rb +3 -0
  113. data/lib/puppet/feature/external_facts.rb +1 -1
  114. data/lib/puppet/feature/hiera_eyaml.rb +3 -0
  115. data/lib/puppet/feature/hocon.rb +3 -0
  116. data/lib/puppet/feature/telnet.rb +9 -0
  117. data/lib/puppet/file_bucket/dipper.rb +58 -2
  118. data/lib/puppet/file_serving/http_metadata.rb +46 -0
  119. data/lib/puppet/file_serving/metadata.rb +18 -2
  120. data/lib/puppet/file_serving/terminus_selector.rb +2 -0
  121. data/lib/puppet/file_system/file_impl.rb +7 -2
  122. data/lib/puppet/file_system/memory_impl.rb +5 -1
  123. data/lib/puppet/file_system/path_pattern.rb +1 -0
  124. data/lib/puppet/file_system/uniquefile.rb +3 -3
  125. data/lib/puppet/file_system/windows.rb +28 -13
  126. data/lib/puppet/file_system.rb +33 -5
  127. data/lib/puppet/forge/repository.rb +3 -35
  128. data/lib/puppet/forge.rb +7 -7
  129. data/lib/puppet/functions/alert.rb +14 -0
  130. data/lib/puppet/functions/assert_type.rb +53 -19
  131. data/lib/puppet/functions/binary_file.rb +19 -0
  132. data/lib/puppet/functions/break.rb +22 -0
  133. data/lib/puppet/functions/contain.rb +33 -0
  134. data/lib/puppet/functions/crit.rb +14 -0
  135. data/lib/puppet/functions/debug.rb +14 -0
  136. data/lib/puppet/functions/defined.rb +88 -58
  137. data/lib/puppet/functions/dig.rb +23 -0
  138. data/lib/puppet/functions/each.rb +89 -39
  139. data/lib/puppet/functions/emerg.rb +14 -0
  140. data/lib/puppet/functions/epp.rb +29 -37
  141. data/lib/puppet/functions/err.rb +14 -0
  142. data/lib/puppet/functions/eyaml_lookup_key.rb +90 -0
  143. data/lib/puppet/functions/filter.rb +64 -38
  144. data/lib/puppet/functions/find_file.rb +31 -0
  145. data/lib/puppet/functions/hiera.rb +76 -3
  146. data/lib/puppet/functions/hiera_array.rb +66 -4
  147. data/lib/puppet/functions/hiera_hash.rb +74 -2
  148. data/lib/puppet/functions/hiera_include.rb +78 -5
  149. data/lib/puppet/functions/hocon_data.rb +35 -0
  150. data/lib/puppet/functions/include.rb +21 -0
  151. data/lib/puppet/functions/info.rb +14 -0
  152. data/lib/puppet/functions/inline_epp.rb +44 -71
  153. data/lib/puppet/functions/json_data.rb +29 -0
  154. data/lib/puppet/functions/lest.rb +17 -0
  155. data/lib/puppet/functions/lookup.rb +172 -184
  156. data/lib/puppet/functions/map.rb +60 -33
  157. data/lib/puppet/functions/match.rb +30 -12
  158. data/lib/puppet/functions/new.rb +31 -0
  159. data/lib/puppet/functions/next.rb +23 -0
  160. data/lib/puppet/functions/notice.rb +14 -0
  161. data/lib/puppet/functions/reduce.rb +99 -70
  162. data/lib/puppet/functions/regsubst.rb +22 -25
  163. data/lib/puppet/functions/require.rb +37 -0
  164. data/lib/puppet/functions/return.rb +22 -0
  165. data/lib/puppet/functions/reverse_each.rb +25 -0
  166. data/lib/puppet/functions/scanf.rb +15 -18
  167. data/lib/puppet/functions/slice.rb +22 -36
  168. data/lib/puppet/functions/split.rb +2 -2
  169. data/lib/puppet/functions/step.rb +26 -0
  170. data/lib/puppet/functions/strftime.rb +35 -0
  171. data/lib/puppet/functions/then.rb +14 -0
  172. data/lib/puppet/functions/type.rb +31 -0
  173. data/lib/puppet/functions/unwrap.rb +40 -0
  174. data/lib/puppet/functions/versioncmp.rb +36 -0
  175. data/lib/puppet/functions/warning.rb +14 -0
  176. data/lib/puppet/functions/with.rb +15 -7
  177. data/lib/puppet/functions/yaml_data.rb +38 -0
  178. data/lib/puppet/functions.rb +180 -32
  179. data/lib/puppet/generate/models/type/property.rb +70 -0
  180. data/lib/puppet/generate/models/type/type.rb +61 -0
  181. data/lib/puppet/generate/templates/type/pcore.erb +42 -0
  182. data/lib/puppet/generate/type.rb +239 -0
  183. data/lib/puppet/graph/rb_tree_map.rb +1 -1
  184. data/lib/puppet/graph/simple_graph.rb +6 -8
  185. data/lib/puppet/indirector/catalog/compiler.rb +195 -8
  186. data/lib/puppet/indirector/catalog/static_compiler.rb +50 -31
  187. data/lib/puppet/indirector/data_binding/none.rb +4 -1
  188. data/lib/puppet/indirector/face.rb +6 -1
  189. data/lib/puppet/indirector/facts/facter.rb +3 -6
  190. data/lib/puppet/indirector/file_bucket_file/file.rb +137 -25
  191. data/lib/puppet/indirector/file_content/http.rb +15 -0
  192. data/lib/puppet/indirector/file_metadata/http.rb +27 -0
  193. data/lib/puppet/indirector/generic_http.rb +16 -0
  194. data/lib/puppet/indirector/hiera.rb +7 -1
  195. data/lib/puppet/indirector/indirection.rb +12 -3
  196. data/lib/puppet/indirector/json.rb +3 -3
  197. data/lib/puppet/indirector/key/ca.rb +2 -2
  198. data/lib/puppet/indirector/key/file.rb +2 -1
  199. data/lib/puppet/indirector/msgpack.rb +2 -2
  200. data/lib/puppet/indirector/node/exec.rb +1 -1
  201. data/lib/puppet/indirector/node/ldap.rb +1 -1
  202. data/lib/puppet/indirector/request.rb +36 -12
  203. data/lib/puppet/indirector/resource_type/parser.rb +10 -3
  204. data/lib/puppet/indirector/rest.rb +80 -5
  205. data/lib/puppet/indirector/ssl_file.rb +24 -3
  206. data/lib/puppet/indirector/terminus.rb +4 -4
  207. data/lib/puppet/info_service/class_information_service.rb +111 -0
  208. data/lib/puppet/info_service.rb +7 -0
  209. data/lib/puppet/interface/documentation.rb +1 -1
  210. data/lib/puppet/interface/face_collection.rb +1 -1
  211. data/lib/puppet/interface.rb +14 -2
  212. data/lib/puppet/loaders.rb +5 -0
  213. data/lib/puppet/metatype/manager.rb +25 -8
  214. data/lib/puppet/module.rb +65 -31
  215. data/lib/puppet/module_tool/applications/application.rb +1 -1
  216. data/lib/puppet/module_tool/applications/builder.rb +5 -4
  217. data/lib/puppet/module_tool/applications/installer.rb +14 -14
  218. data/lib/puppet/module_tool/applications/unpacker.rb +1 -1
  219. data/lib/puppet/module_tool/applications/upgrader.rb +13 -13
  220. data/lib/puppet/module_tool/checksums.rb +1 -1
  221. data/lib/puppet/module_tool/errors/installer.rb +2 -2
  222. data/lib/puppet/module_tool/installed_modules.rb +7 -7
  223. data/lib/puppet/module_tool/local_tarball.rb +3 -3
  224. data/lib/puppet/module_tool/metadata.rb +34 -11
  225. data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +14 -3
  226. data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +42 -38
  227. data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +19 -4
  228. data/lib/puppet/module_tool/skeleton/templates/generator/{tests → examples}/init.pp.erb +2 -2
  229. data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +25 -18
  230. data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +1 -2
  231. data/lib/puppet/module_tool/tar/mini.rb +3 -3
  232. data/lib/puppet/module_tool.rb +5 -5
  233. data/lib/puppet/network/auth_config_parser.rb +1 -1
  234. data/lib/puppet/network/authconfig.rb +21 -1
  235. data/lib/puppet/network/authorization.rb +8 -1
  236. data/lib/puppet/network/http/api/indirected_routes.rb +23 -34
  237. data/lib/puppet/network/http/api/master/v3/environment.rb +63 -0
  238. data/lib/puppet/network/http/api/master/v3.rb +7 -1
  239. data/lib/puppet/network/http/compression.rb +2 -1
  240. data/lib/puppet/network/http/connection.rb +2 -0
  241. data/lib/puppet/network/http/error.rb +1 -1
  242. data/lib/puppet/network/http/factory.rb +8 -4
  243. data/lib/puppet/network/http/handler.rb +3 -2
  244. data/lib/puppet/network/http/pool.rb +9 -0
  245. data/lib/puppet/network/http/rack/rest.rb +25 -2
  246. data/lib/puppet/network/http/webrick.rb +2 -1
  247. data/lib/puppet/network/rights.rb +1 -11
  248. data/lib/puppet/node/environment.rb +49 -14
  249. data/lib/puppet/node/facts.rb +1 -1
  250. data/lib/puppet/node.rb +22 -7
  251. data/lib/puppet/parameter/boolean.rb +1 -1
  252. data/lib/puppet/parameter/value.rb +1 -1
  253. data/lib/puppet/parameter.rb +23 -3
  254. data/lib/puppet/parser/ast/pops_bridge.rb +97 -27
  255. data/lib/puppet/parser/ast/resource.rb +5 -0
  256. data/lib/puppet/parser/ast/resource_instance.rb +5 -1
  257. data/lib/puppet/parser/ast/resourceparam.rb +5 -0
  258. data/lib/puppet/parser/ast.rb +5 -0
  259. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +64 -0
  260. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +60 -0
  261. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +20 -0
  262. data/lib/puppet/parser/compiler/catalog_validator.rb +33 -0
  263. data/lib/puppet/parser/compiler.rb +325 -42
  264. data/lib/puppet/parser/e4_parser_adapter.rb +13 -12
  265. data/lib/puppet/parser/environment_compiler.rb +201 -0
  266. data/lib/puppet/parser/functions/assert_type.rb +47 -17
  267. data/lib/puppet/parser/functions/binary_file.rb +24 -0
  268. data/lib/puppet/parser/functions/break.rb +39 -0
  269. data/lib/puppet/parser/functions/contain.rb +7 -15
  270. data/lib/puppet/parser/functions/create_resources.rb +39 -23
  271. data/lib/puppet/parser/functions/defined.rb +106 -93
  272. data/lib/puppet/parser/functions/dig.rb +29 -0
  273. data/lib/puppet/parser/functions/each.rb +86 -28
  274. data/lib/puppet/parser/functions/epp.rb +30 -38
  275. data/lib/puppet/parser/functions/filter.rb +60 -24
  276. data/lib/puppet/parser/functions/find_file.rb +28 -0
  277. data/lib/puppet/parser/functions/fqdn_rand.rb +3 -3
  278. data/lib/puppet/parser/functions/hiera.rb +98 -28
  279. data/lib/puppet/parser/functions/hiera_array.rb +86 -29
  280. data/lib/puppet/parser/functions/hiera_hash.rb +96 -31
  281. data/lib/puppet/parser/functions/hiera_include.rb +96 -41
  282. data/lib/puppet/parser/functions/include.rb +4 -8
  283. data/lib/puppet/parser/functions/inline_epp.rb +36 -61
  284. data/lib/puppet/parser/functions/inline_template.rb +2 -2
  285. data/lib/puppet/parser/functions/lest.rb +49 -0
  286. data/lib/puppet/parser/functions/lookup.rb +129 -151
  287. data/lib/puppet/parser/functions/map.rb +56 -21
  288. data/lib/puppet/parser/functions/match.rb +29 -13
  289. data/lib/puppet/parser/functions/new.rb +926 -0
  290. data/lib/puppet/parser/functions/next.rb +38 -0
  291. data/lib/puppet/parser/functions/reduce.rb +98 -61
  292. data/lib/puppet/parser/functions/regsubst.rb +4 -2
  293. data/lib/puppet/parser/functions/require.rb +4 -27
  294. data/lib/puppet/parser/functions/return.rb +71 -0
  295. data/lib/puppet/parser/functions/reverse_each.rb +83 -0
  296. data/lib/puppet/parser/functions/scanf.rb +25 -31
  297. data/lib/puppet/parser/functions/slice.rb +18 -25
  298. data/lib/puppet/parser/functions/split.rb +2 -2
  299. data/lib/puppet/parser/functions/step.rb +84 -0
  300. data/lib/puppet/parser/functions/strftime.rb +185 -0
  301. data/lib/puppet/parser/functions/then.rb +73 -0
  302. data/lib/puppet/parser/functions/type.rb +53 -0
  303. data/lib/puppet/parser/functions/with.rb +17 -9
  304. data/lib/puppet/parser/functions.rb +34 -16
  305. data/lib/puppet/parser/resource.rb +149 -35
  306. data/lib/puppet/parser/scope.rb +344 -88
  307. data/lib/puppet/parser/type_loader.rb +1 -1
  308. data/lib/puppet/parser.rb +3 -1
  309. data/lib/puppet/plugins/configuration.rb +11 -2
  310. data/lib/puppet/plugins/data_providers/data_provider.rb +406 -0
  311. data/lib/puppet/plugins/data_providers/registry.rb +51 -0
  312. data/lib/puppet/plugins/data_providers.rb +15 -60
  313. data/lib/puppet/pops/adaptable.rb +4 -4
  314. data/lib/puppet/pops/adapters.rb +114 -31
  315. data/lib/puppet/pops/binder/binder.rb +21 -17
  316. data/lib/puppet/pops/binder/binder_issues.rb +8 -6
  317. data/lib/puppet/pops/binder/bindings_checker.rb +12 -8
  318. data/lib/puppet/pops/binder/bindings_composer.rb +16 -12
  319. data/lib/puppet/pops/binder/bindings_factory.rb +108 -104
  320. data/lib/puppet/pops/binder/bindings_label_provider.rb +3 -1
  321. data/lib/puppet/pops/binder/bindings_loader.rb +6 -2
  322. data/lib/puppet/pops/binder/bindings_model.rb +49 -47
  323. data/lib/puppet/pops/binder/bindings_model_meta.rb +2 -2
  324. data/lib/puppet/pops/binder/config/binder_config.rb +1 -1
  325. data/lib/puppet/pops/binder/config/diagnostic_producer.rb +10 -6
  326. data/lib/puppet/pops/binder/injector.rb +55 -50
  327. data/lib/puppet/pops/binder/key_factory.rb +10 -12
  328. data/lib/puppet/pops/binder/producers.rb +70 -65
  329. data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +1 -1
  330. data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +68 -9
  331. data/lib/puppet/pops/evaluator/access_operator.rb +246 -147
  332. data/lib/puppet/pops/evaluator/callable_signature.rb +7 -0
  333. data/lib/puppet/pops/evaluator/closure.rb +231 -115
  334. data/lib/puppet/pops/evaluator/collector_transformer.rb +44 -15
  335. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -1
  336. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -2
  337. data/lib/puppet/pops/evaluator/compare_operator.rb +69 -12
  338. data/lib/puppet/pops/evaluator/epp_evaluator.rb +9 -8
  339. data/lib/puppet/pops/evaluator/evaluator_impl.rb +194 -106
  340. data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
  341. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +84 -0
  342. data/lib/puppet/pops/evaluator/literal_evaluator.rb +87 -0
  343. data/lib/puppet/pops/evaluator/relationship_operator.rb +18 -11
  344. data/lib/puppet/pops/evaluator/runtime3_converter.rb +60 -51
  345. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +119 -0
  346. data/lib/puppet/pops/evaluator/runtime3_support.rb +111 -79
  347. data/lib/puppet/pops/functions/dispatch.rb +27 -7
  348. data/lib/puppet/pops/functions/dispatcher.rb +15 -20
  349. data/lib/puppet/pops/functions/function.rb +30 -4
  350. data/lib/puppet/pops/issue_reporter.rb +7 -5
  351. data/lib/puppet/pops/issues.rb +177 -17
  352. data/lib/puppet/pops/label_provider.rb +18 -4
  353. data/lib/puppet/pops/loader/base_loader.rb +74 -20
  354. data/lib/puppet/pops/loader/dependency_loader.rb +27 -2
  355. data/lib/puppet/pops/loader/loader.rb +43 -49
  356. data/lib/puppet/pops/loader/loader_paths.rb +48 -2
  357. data/lib/puppet/pops/loader/module_loaders.rb +53 -20
  358. data/lib/puppet/pops/loader/null_loader.rb +17 -1
  359. data/lib/puppet/pops/loader/predefined_loader.rb +29 -0
  360. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +26 -20
  361. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +80 -0
  362. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +16 -4
  363. data/lib/puppet/pops/loader/runtime3_type_loader.rb +96 -0
  364. data/lib/puppet/pops/loader/static_loader.rb +139 -38
  365. data/lib/puppet/pops/loader/type_definition_instantiator.rb +93 -0
  366. data/lib/puppet/pops/loader/typed_name.rb +48 -0
  367. data/lib/puppet/pops/loaders.rb +204 -26
  368. data/lib/puppet/pops/lookup/configured_data_provider.rb +93 -0
  369. data/lib/puppet/pops/lookup/context.rb +200 -0
  370. data/lib/puppet/pops/lookup/data_adapter.rb +27 -0
  371. data/lib/puppet/pops/lookup/data_dig_function_provider.rb +145 -0
  372. data/lib/puppet/pops/lookup/data_hash_function_provider.rb +126 -0
  373. data/lib/puppet/pops/lookup/data_provider.rb +107 -0
  374. data/lib/puppet/pops/lookup/environment_data_provider.rb +35 -0
  375. data/lib/puppet/pops/lookup/explainer.rb +594 -0
  376. data/lib/puppet/pops/lookup/function_provider.rb +110 -0
  377. data/lib/puppet/pops/lookup/global_data_provider.rb +78 -0
  378. data/lib/puppet/pops/lookup/hiera_config.rb +782 -0
  379. data/lib/puppet/pops/lookup/interpolation.rb +153 -0
  380. data/lib/puppet/pops/lookup/invocation.rb +251 -0
  381. data/lib/puppet/pops/lookup/location_resolver.rb +99 -0
  382. data/lib/puppet/pops/lookup/lookup_adapter.rb +510 -0
  383. data/lib/puppet/pops/lookup/lookup_key.rb +99 -0
  384. data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +92 -0
  385. data/lib/puppet/pops/lookup/module_data_provider.rb +81 -0
  386. data/lib/puppet/pops/lookup/sub_lookup.rb +90 -0
  387. data/lib/puppet/pops/lookup.rb +47 -49
  388. data/lib/puppet/pops/merge_strategy.rb +183 -47
  389. data/lib/puppet/pops/migration/migration_checker.rb +4 -0
  390. data/lib/puppet/pops/model/ast_transformer.rb +8 -1
  391. data/lib/puppet/pops/model/factory.rb +254 -162
  392. data/lib/puppet/pops/model/model.rb +25 -8
  393. data/lib/puppet/pops/model/model_label_provider.rb +28 -6
  394. data/lib/puppet/pops/model/model_meta.rb +45 -2
  395. data/lib/puppet/pops/model/model_tree_dumper.rb +44 -0
  396. data/lib/puppet/pops/parser/code_merger.rb +13 -1
  397. data/lib/puppet/pops/parser/egrammar.ra +150 -32
  398. data/lib/puppet/pops/parser/eparser.rb +1887 -1321
  399. data/lib/puppet/pops/parser/epp_support.rb +15 -9
  400. data/lib/puppet/pops/parser/evaluating_parser.rb +21 -13
  401. data/lib/puppet/pops/parser/heredoc_support.rb +16 -13
  402. data/lib/puppet/pops/parser/interpolation_support.rb +7 -0
  403. data/lib/puppet/pops/parser/lexer2.rb +465 -396
  404. data/lib/puppet/pops/parser/lexer_support.rb +85 -7
  405. data/lib/puppet/pops/parser/locator.rb +63 -9
  406. data/lib/puppet/pops/parser/parser_support.rb +40 -28
  407. data/lib/puppet/pops/parser/slurp_support.rb +23 -14
  408. data/lib/puppet/pops/patterns.rb +16 -1
  409. data/lib/puppet/pops/pcore.rb +96 -0
  410. data/lib/puppet/pops/puppet_stack.rb +43 -0
  411. data/lib/puppet/pops/resource/param.rb +55 -0
  412. data/lib/puppet/pops/resource/resource_type_impl.rb +314 -0
  413. data/lib/puppet/pops/resource/resource_type_set.pcore +22 -0
  414. data/lib/puppet/pops/serialization/abstract_reader.rb +176 -0
  415. data/lib/puppet/pops/serialization/abstract_writer.rb +207 -0
  416. data/lib/puppet/pops/serialization/deserializer.rb +77 -0
  417. data/lib/puppet/pops/serialization/extension.rb +157 -0
  418. data/lib/puppet/pops/serialization/instance_reader.rb +19 -0
  419. data/lib/puppet/pops/serialization/instance_writer.rb +14 -0
  420. data/lib/puppet/pops/serialization/json.rb +297 -0
  421. data/lib/puppet/pops/serialization/object.rb +71 -0
  422. data/lib/puppet/pops/serialization/rgen.rb +152 -0
  423. data/lib/puppet/pops/serialization/serializer.rb +118 -0
  424. data/lib/puppet/pops/serialization/time_factory.rb +67 -0
  425. data/lib/puppet/pops/serialization.rb +17 -0
  426. data/lib/puppet/pops/time/timespan.rb +718 -0
  427. data/lib/puppet/pops/time/timestamp.rb +148 -0
  428. data/lib/puppet/pops/types/annotatable.rb +36 -0
  429. data/lib/puppet/pops/types/class_loader.rb +25 -23
  430. data/lib/puppet/pops/types/enumeration.rb +9 -27
  431. data/lib/puppet/pops/types/implementation_registry.rb +141 -0
  432. data/lib/puppet/pops/types/iterable.rb +308 -0
  433. data/lib/puppet/pops/types/p_binary_type.rb +220 -0
  434. data/lib/puppet/pops/types/p_meta_type.rb +83 -0
  435. data/lib/puppet/pops/types/p_object_type.rb +886 -0
  436. data/lib/puppet/pops/types/p_runtime_type.rb +115 -0
  437. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +187 -0
  438. data/lib/puppet/pops/types/p_sem_ver_type.rb +141 -0
  439. data/lib/puppet/pops/types/p_sensitive_type.rb +73 -0
  440. data/lib/puppet/pops/types/p_timespan_type.rb +141 -0
  441. data/lib/puppet/pops/types/p_timestamp_type.rb +69 -0
  442. data/lib/puppet/pops/types/p_type_set_type.rb +352 -0
  443. data/lib/puppet/pops/types/puppet_object.rb +16 -0
  444. data/lib/puppet/pops/types/recursion_guard.rb +136 -0
  445. data/lib/puppet/pops/types/ruby_generator.rb +275 -0
  446. data/lib/puppet/pops/types/string_converter.rb +1033 -0
  447. data/lib/puppet/pops/types/type_acceptor.rb +25 -0
  448. data/lib/puppet/pops/types/type_asserter.rb +21 -19
  449. data/lib/puppet/pops/types/type_assertion_error.rb +1 -0
  450. data/lib/puppet/pops/types/type_calculator.rb +244 -1287
  451. data/lib/puppet/pops/types/type_conversion_error.rb +15 -0
  452. data/lib/puppet/pops/types/type_factory.rb +222 -169
  453. data/lib/puppet/pops/types/type_formatter.rb +686 -0
  454. data/lib/puppet/pops/types/type_mismatch_describer.rb +1105 -0
  455. data/lib/puppet/pops/types/type_parser.rb +364 -281
  456. data/lib/puppet/pops/types/type_set_reference.rb +59 -0
  457. data/lib/puppet/pops/types/types.rb +3286 -307
  458. data/lib/puppet/pops/utils.rb +11 -10
  459. data/lib/puppet/pops/validation/checker4_0.rb +238 -56
  460. data/lib/puppet/pops/validation/validator_factory_4_0.rb +13 -5
  461. data/lib/puppet/pops/validation.rb +31 -16
  462. data/lib/puppet/pops/visitor.rb +9 -6
  463. data/lib/puppet/pops.rb +40 -25
  464. data/lib/puppet/property/ensure.rb +1 -1
  465. data/lib/puppet/property.rb +67 -7
  466. data/lib/puppet/provider/aixobject.rb +4 -4
  467. data/lib/puppet/provider/augeas/augeas.rb +57 -2
  468. data/lib/puppet/provider/cron/crontab.rb +1 -1
  469. data/lib/puppet/provider/exec/windows.rb +1 -1
  470. data/lib/puppet/provider/exec.rb +10 -3
  471. data/lib/puppet/provider/group/aix.rb +4 -4
  472. data/lib/puppet/provider/group/directoryservice.rb +10 -0
  473. data/lib/puppet/provider/group/pw.rb +1 -0
  474. data/lib/puppet/provider/group/windows_adsi.rb +15 -3
  475. data/lib/puppet/provider/macauthorization/macauthorization.rb +11 -10
  476. data/lib/puppet/provider/mailalias/aliases.rb +1 -1
  477. data/lib/puppet/provider/mcx/mcxcontent.rb +5 -4
  478. data/lib/puppet/provider/mount/parsed.rb +16 -2
  479. data/lib/puppet/provider/nameservice/directoryservice.rb +55 -62
  480. data/lib/puppet/provider/nameservice.rb +23 -8
  481. data/lib/puppet/provider/package/appdmg.rb +7 -6
  482. data/lib/puppet/provider/package/apple.rb +1 -1
  483. data/lib/puppet/provider/package/dnf.rb +46 -0
  484. data/lib/puppet/provider/package/gem.rb +29 -3
  485. data/lib/puppet/provider/package/nim.rb +2 -2
  486. data/lib/puppet/provider/package/openbsd.rb +7 -7
  487. data/lib/puppet/provider/package/pacman.rb +11 -10
  488. data/lib/puppet/provider/package/pip.rb +72 -20
  489. data/lib/puppet/provider/package/pip3.rb +20 -0
  490. data/lib/puppet/provider/package/pkg.rb +12 -8
  491. data/lib/puppet/provider/package/pkgdmg.rb +11 -8
  492. data/lib/puppet/provider/package/pkgin.rb +4 -4
  493. data/lib/puppet/provider/package/pkgng.rb +15 -6
  494. data/lib/puppet/provider/package/pkgutil.rb +1 -1
  495. data/lib/puppet/provider/package/portage.rb +48 -8
  496. data/lib/puppet/provider/package/puppet_gem.rb +0 -0
  497. data/lib/puppet/provider/package/rpm.rb +123 -17
  498. data/lib/puppet/provider/package/sun.rb +1 -1
  499. data/lib/puppet/provider/package/tdnf.rb +28 -0
  500. data/lib/puppet/provider/package/windows/exe_package.rb +10 -8
  501. data/lib/puppet/provider/package/windows/msi_package.rb +4 -3
  502. data/lib/puppet/provider/package/windows/package.rb +9 -1
  503. data/lib/puppet/provider/package/windows.rb +1 -1
  504. data/lib/puppet/provider/package/yum.rb +62 -83
  505. data/lib/puppet/provider/package/zypper.rb +19 -0
  506. data/lib/puppet/provider/package.rb +6 -2
  507. data/lib/puppet/provider/parsedfile.rb +2 -2
  508. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +7 -0
  509. data/lib/puppet/provider/selmodule/semodule.rb +20 -16
  510. data/lib/puppet/provider/service/base.rb +4 -3
  511. data/lib/puppet/provider/service/bsd.rb +9 -9
  512. data/lib/puppet/provider/service/daemontools.rb +5 -5
  513. data/lib/puppet/provider/service/debian.rb +14 -5
  514. data/lib/puppet/provider/service/freebsd.rb +1 -1
  515. data/lib/puppet/provider/service/init.rb +20 -3
  516. data/lib/puppet/provider/service/launchd.rb +57 -19
  517. data/lib/puppet/provider/service/rcng.rb +51 -0
  518. data/lib/puppet/provider/service/redhat.rb +2 -1
  519. data/lib/puppet/provider/service/runit.rb +4 -4
  520. data/lib/puppet/provider/service/smf.rb +59 -8
  521. data/lib/puppet/provider/service/src.rb +66 -39
  522. data/lib/puppet/provider/service/systemd.rb +141 -22
  523. data/lib/puppet/provider/service/upstart.rb +1 -1
  524. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
  525. data/lib/puppet/provider/sshkey/parsed.rb +20 -10
  526. data/lib/puppet/provider/user/aix.rb +11 -5
  527. data/lib/puppet/provider/user/directoryservice.rb +43 -66
  528. data/lib/puppet/provider/user/hpux.rb +1 -1
  529. data/lib/puppet/provider/user/pw.rb +1 -0
  530. data/lib/puppet/provider/user/user_role_add.rb +19 -2
  531. data/lib/puppet/provider/user/windows_adsi.rb +11 -5
  532. data/lib/puppet/provider/yumrepo/inifile.rb +9 -6
  533. data/lib/puppet/provider/zfs/zfs.rb +2 -2
  534. data/lib/puppet/provider/zone/solaris.rb +6 -3
  535. data/lib/puppet/provider/zpool/zpool.rb +2 -2
  536. data/lib/puppet/provider.rb +9 -7
  537. data/lib/puppet/reference/configuration.rb +13 -5
  538. data/lib/puppet/reference/indirection.rb +1 -1
  539. data/lib/puppet/reference/providers.rb +2 -3
  540. data/lib/puppet/reference/report.rb +9 -12
  541. data/lib/puppet/reference/type.rb +1 -1
  542. data/lib/puppet/reports.rb +5 -1
  543. data/lib/puppet/resource/capability_finder.rb +128 -0
  544. data/lib/puppet/resource/catalog.rb +167 -36
  545. data/lib/puppet/resource/status.rb +30 -5
  546. data/lib/puppet/resource/type.rb +247 -50
  547. data/lib/puppet/resource/type_collection.rb +83 -10
  548. data/lib/puppet/resource.rb +211 -145
  549. data/lib/puppet/settings/base_setting.rb +9 -3
  550. data/lib/puppet/settings/config_file.rb +3 -2
  551. data/lib/puppet/settings/directory_setting.rb +6 -0
  552. data/lib/puppet/settings/environment_conf.rb +26 -6
  553. data/lib/puppet/settings/file_or_directory_setting.rb +6 -0
  554. data/lib/puppet/settings/file_setting.rb +20 -9
  555. data/lib/puppet/settings/ini_file.rb +2 -2
  556. data/lib/puppet/settings/server_list_setting.rb +20 -0
  557. data/lib/puppet/settings/symbolic_enum_setting.rb +17 -0
  558. data/lib/puppet/settings.rb +98 -45
  559. data/lib/puppet/ssl/base.rb +14 -1
  560. data/lib/puppet/ssl/certificate.rb +1 -1
  561. data/lib/puppet/ssl/certificate_authority/interface.rb +166 -26
  562. data/lib/puppet/ssl/certificate_authority.rb +49 -13
  563. data/lib/puppet/ssl/certificate_factory.rb +3 -3
  564. data/lib/puppet/ssl/certificate_request.rb +5 -5
  565. data/lib/puppet/ssl/certificate_signer.rb +1 -1
  566. data/lib/puppet/ssl/configuration.rb +4 -1
  567. data/lib/puppet/ssl/host.rb +26 -4
  568. data/lib/puppet/ssl/inventory.rb +10 -3
  569. data/lib/puppet/ssl/key.rb +7 -3
  570. data/lib/puppet/ssl/oids.rb +43 -3
  571. data/lib/puppet/ssl/validator/default_validator.rb +3 -3
  572. data/lib/puppet/syntax_checkers/base64.rb +41 -0
  573. data/lib/puppet/syntax_checkers/json.rb +0 -2
  574. data/lib/puppet/test/test_helper.rb +21 -7
  575. data/lib/puppet/transaction/additional_resource_generator.rb +101 -8
  576. data/lib/puppet/transaction/event.rb +29 -2
  577. data/lib/puppet/transaction/event_manager.rb +1 -1
  578. data/lib/puppet/transaction/persistence.rb +84 -0
  579. data/lib/puppet/transaction/report.rb +86 -4
  580. data/lib/puppet/transaction/resource_harness.rb +95 -35
  581. data/lib/puppet/transaction.rb +64 -36
  582. data/lib/puppet/type/augeas.rb +13 -4
  583. data/lib/puppet/type/component.rb +11 -0
  584. data/lib/puppet/type/cron.rb +13 -13
  585. data/lib/puppet/type/exec.rb +43 -19
  586. data/lib/puppet/type/file/checksum.rb +1 -0
  587. data/lib/puppet/type/file/checksum_value.rb +53 -0
  588. data/lib/puppet/type/file/content.rb +36 -121
  589. data/lib/puppet/type/file/data_sync.rb +92 -0
  590. data/lib/puppet/type/file/ensure.rb +21 -18
  591. data/lib/puppet/type/file/selcontext.rb +1 -1
  592. data/lib/puppet/type/file/source.rb +121 -34
  593. data/lib/puppet/type/file/target.rb +2 -2
  594. data/lib/puppet/type/file.rb +145 -46
  595. data/lib/puppet/type/filebucket.rb +1 -1
  596. data/lib/puppet/type/group.rb +26 -8
  597. data/lib/puppet/type/host.rb +1 -1
  598. data/lib/puppet/type/interface.rb +8 -3
  599. data/lib/puppet/type/macauthorization.rb +1 -1
  600. data/lib/puppet/type/mount.rb +16 -1
  601. data/lib/puppet/type/notify.rb +1 -1
  602. data/lib/puppet/type/package.rb +32 -12
  603. data/lib/puppet/type/resources.rb +1 -1
  604. data/lib/puppet/type/schedule.rb +5 -5
  605. data/lib/puppet/type/scheduled_task.rb +1 -1
  606. data/lib/puppet/type/service.rb +24 -0
  607. data/lib/puppet/type/ssh_authorized_key.rb +17 -11
  608. data/lib/puppet/type/sshkey.rb +5 -3
  609. data/lib/puppet/type/stage.rb +1 -1
  610. data/lib/puppet/type/tidy.rb +7 -4
  611. data/lib/puppet/type/user.rb +51 -26
  612. data/lib/puppet/type/yumrepo.rb +23 -3
  613. data/lib/puppet/type/zone.rb +6 -6
  614. data/lib/puppet/type.rb +175 -41
  615. data/lib/puppet/util/autoload.rb +16 -11
  616. data/lib/puppet/util/character_encoding.rb +95 -0
  617. data/lib/puppet/util/checksums.rb +74 -31
  618. data/lib/puppet/util/classgen.rb +1 -1
  619. data/lib/puppet/util/command_line/trollop.rb +1 -1
  620. data/lib/puppet/util/command_line.rb +10 -2
  621. data/lib/puppet/util/execution.rb +35 -16
  622. data/lib/puppet/util/feature.rb +1 -1
  623. data/lib/puppet/util/filetype.rb +11 -5
  624. data/lib/puppet/util/http_proxy.rb +132 -0
  625. data/lib/puppet/util/inifile.rb +1 -1
  626. data/lib/puppet/util/instance_loader.rb +1 -1
  627. data/lib/puppet/util/log.rb +28 -1
  628. data/lib/puppet/util/logging.rb +46 -3
  629. data/lib/puppet/util/monkey_patches.rb +20 -7
  630. data/lib/puppet/util/multi_match.rb +51 -0
  631. data/lib/puppet/util/network_device/cisco/device.rb +24 -6
  632. data/lib/puppet/util/network_device/cisco/interface.rb +21 -9
  633. data/lib/puppet/util/network_device/config.rb +1 -1
  634. data/lib/puppet/util/network_device/transport/ssh.rb +7 -3
  635. data/lib/puppet/util/network_device/transport/telnet.rb +39 -36
  636. data/lib/puppet/util/plist.rb +151 -0
  637. data/lib/puppet/util/profiler/aggregate.rb +1 -1
  638. data/lib/puppet/util/profiler/around_profiler.rb +1 -1
  639. data/lib/puppet/util/profiler.rb +1 -1
  640. data/lib/puppet/util/psych_support.rb +1 -1
  641. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +2 -2
  642. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +2 -1
  643. data/lib/puppet/util/rdoc.rb +2 -2
  644. data/lib/puppet/util/reference.rb +4 -2
  645. data/lib/puppet/util/resource_template.rb +1 -1
  646. data/lib/puppet/util/rubygems.rb +1 -1
  647. data/lib/puppet/util/run_mode.rb +2 -2
  648. data/lib/puppet/util/skip_tags.rb +9 -0
  649. data/lib/puppet/util/splayer.rb +18 -0
  650. data/lib/puppet/util/tagging.rb +8 -2
  651. data/lib/puppet/util/watcher/periodic_watcher.rb +2 -2
  652. data/lib/puppet/util/windows/access_control_entry.rb +2 -2
  653. data/lib/puppet/util/windows/access_control_list.rb +3 -3
  654. data/lib/puppet/util/windows/adsi.rb +97 -32
  655. data/lib/puppet/util/windows/api_types.rb +24 -18
  656. data/lib/puppet/util/windows/com.rb +3 -3
  657. data/lib/puppet/util/windows/error.rb +1 -1
  658. data/lib/puppet/util/windows/file.rb +112 -19
  659. data/lib/puppet/util/windows/principal.rb +190 -0
  660. data/lib/puppet/util/windows/process.rb +88 -11
  661. data/lib/puppet/util/windows/registry.rb +22 -16
  662. data/lib/puppet/util/windows/root_certs.rb +5 -5
  663. data/lib/puppet/util/windows/security.rb +38 -37
  664. data/lib/puppet/util/windows/security_descriptor.rb +1 -1
  665. data/lib/puppet/util/windows/sid.rb +84 -15
  666. data/lib/puppet/util/windows/taskscheduler.rb +99 -43
  667. data/lib/puppet/util/windows/user.rb +32 -14
  668. data/lib/puppet/util/windows.rb +5 -0
  669. data/lib/puppet/util/yaml.rb +15 -3
  670. data/lib/puppet/util.rb +125 -23
  671. data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +1 -1
  672. data/lib/puppet/vendor/deep_merge/test/test_deep_merge.rb +1 -1
  673. data/lib/puppet/vendor/load_semantic_puppet.rb +1 -0
  674. data/lib/puppet/vendor/pathspec/LICENSE +2 -2
  675. data/lib/puppet/vendor/pathspec/README.md +1 -1
  676. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +2 -1
  677. data/lib/puppet/vendor/require_vendored.rb +0 -1
  678. data/lib/puppet/vendor/rgen/README.rdoc +1 -1
  679. data/lib/puppet/vendor/rgen_patch.rb +1 -1
  680. data/lib/puppet/vendor/semantic/lib/semantic.rb +4 -6
  681. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph.rb +2 -2
  682. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph_node.rb +2 -2
  683. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/module_release.rb +17 -5
  684. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/source.rb +2 -2
  685. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/unsatisfiable_graph.rb +2 -2
  686. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency.rb +7 -7
  687. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +3 -0
  688. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/locales/config.yaml +21 -0
  689. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version.rb +48 -21
  690. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version_range.rb +15 -17
  691. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +17 -0
  692. data/lib/puppet/version.rb +7 -3
  693. data/lib/puppet.rb +86 -2
  694. data/lib/puppet_x.rb +7 -1
  695. data/lib/semver.rb +36 -13
  696. data/locales/config.yaml +29 -0
  697. data/locales/puppet.pot +93 -0
  698. data/man/man5/puppet.conf.5 +13 -13
  699. data/man/man8/extlookup2hiera.8 +1 -1
  700. data/man/man8/puppet-agent.8 +2 -2
  701. data/man/man8/puppet-apply.8 +2 -2
  702. data/man/man8/puppet-ca.8 +2 -2
  703. data/man/man8/puppet-catalog.8 +2 -2
  704. data/man/man8/puppet-cert.8 +2 -2
  705. data/man/man8/puppet-certificate.8 +2 -2
  706. data/man/man8/puppet-certificate_request.8 +2 -2
  707. data/man/man8/puppet-certificate_revocation_list.8 +2 -2
  708. data/man/man8/puppet-config.8 +3 -3
  709. data/man/man8/puppet-describe.8 +1 -1
  710. data/man/man8/puppet-device.8 +1 -1
  711. data/man/man8/puppet-doc.8 +1 -1
  712. data/man/man8/puppet-epp.8 +2 -2
  713. data/man/man8/puppet-facts.8 +2 -2
  714. data/man/man8/puppet-file.8 +2 -2
  715. data/man/man8/puppet-filebucket.8 +2 -2
  716. data/man/man8/puppet-help.8 +2 -2
  717. data/man/man8/puppet-inspect.8 +2 -2
  718. data/man/man8/puppet-key.8 +2 -2
  719. data/man/man8/puppet-man.8 +2 -2
  720. data/man/man8/puppet-master.8 +2 -2
  721. data/man/man8/puppet-module.8 +9 -9
  722. data/man/man8/puppet-node.8 +2 -2
  723. data/man/man8/puppet-parser.8 +2 -2
  724. data/man/man8/puppet-plugin.8 +2 -2
  725. data/man/man8/puppet-report.8 +2 -2
  726. data/man/man8/puppet-resource.8 +2 -2
  727. data/man/man8/puppet-resource_type.8 +2 -2
  728. data/man/man8/puppet-status.8 +3 -3
  729. data/man/man8/puppet.8 +1 -1
  730. data/spec/fixtures/module.tar.gz +0 -0
  731. data/spec/fixtures/unit/application/environments/production/data/common.yaml +22 -0
  732. data/spec/fixtures/unit/application/environments/production/environment.conf +1 -0
  733. data/spec/fixtures/unit/application/environments/production/manifests/site.pp +1 -0
  734. data/spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf +1 -0
  735. data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/environment/data.pp +10 -0
  736. data/spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp +1 -0
  737. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/data/bad.json +3 -0
  738. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/environment.conf +2 -0
  739. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/hiera.yaml +5 -0
  740. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/manifests/site.pp +5 -0
  741. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/data/bad.yaml +3 -0
  742. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/environment.conf +2 -0
  743. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/hiera.yaml +5 -0
  744. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/manifests/site.pp +5 -0
  745. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/data/common.yaml +2 -0
  746. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/environment.conf +2 -0
  747. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/manifests/site.pp +1 -0
  748. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/data/common.yaml +2 -0
  749. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/manifests/init.pp +5 -0
  750. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/metadata.json +9 -0
  751. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/first.json +3 -0
  752. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/name.yaml +2 -0
  753. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/second.json +3 -0
  754. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/single.yaml +2 -0
  755. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/third_utf8.json +3 -0
  756. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/utf8.yaml +3 -0
  757. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data2/single.yaml +2 -0
  758. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/environment.conf +2 -0
  759. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +22 -0
  760. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +5 -0
  761. data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +48 -0
  762. data/spec/fixtures/unit/data_providers/environments/hiera_misc/environment.conf +2 -0
  763. data/spec/fixtures/unit/data_providers/environments/hiera_misc/manifests/site.pp +1 -0
  764. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/data/common.yaml +30 -0
  765. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/manifests/init.pp +13 -0
  766. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/metadata.json +9 -0
  767. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml +4 -0
  768. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml +4 -0
  769. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/environment.conf +2 -0
  770. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml +7 -0
  771. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/manifests/site.pp +1 -0
  772. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/first.json +3 -0
  773. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/name.yaml +2 -0
  774. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/second.json +3 -0
  775. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/server1.yaml +1 -0
  776. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/server2.yaml +1 -0
  777. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/single.yaml +2 -0
  778. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data2/single.yaml +2 -0
  779. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/hiera.yaml +20 -0
  780. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/manifests/init.pp +5 -0
  781. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/metadata.json +9 -0
  782. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml +4 -0
  783. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml +4 -0
  784. data/spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf +2 -0
  785. data/spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml +7 -0
  786. data/spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp +1 -0
  787. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml +6 -0
  788. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml +5 -0
  789. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp +2 -0
  790. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json +9 -0
  791. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +4 -0
  792. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml +5 -0
  793. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp +3 -0
  794. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json +9 -0
  795. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +2 -1
  796. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/manifests/init.pp +2 -1
  797. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/hiera.yaml +5 -0
  798. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet/bindings/backend/default.rb +9 -0
  799. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet_x/backend/special_data_provider_factory.rb +23 -0
  800. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/manifests/init.pp +5 -0
  801. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/metadata.json +9 -0
  802. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +2 -0
  803. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_module_data.rb +1 -0
  804. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/manifests/init.pp +1 -1
  805. data/spec/fixtures/unit/functions/lookup/data/common.yaml +19 -0
  806. data/spec/fixtures/unit/functions/lookup_fixture/data/common.yaml +19 -0
  807. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +1 -0
  808. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/manifests/init.pp +2 -0
  809. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/data/empty.json +0 -0
  810. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/hiera.yaml +5 -0
  811. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/manifests/init.pp +2 -0
  812. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/metadata.json +9 -0
  813. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/data/empty_key.json +1 -0
  814. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/hiera.yaml +5 -0
  815. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/manifests/init.pp +2 -0
  816. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/metadata.json +9 -0
  817. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/data/empty_key.yaml +1 -0
  818. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/hiera.yaml +5 -0
  819. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/manifests/init.pp +2 -0
  820. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/metadata.json +9 -0
  821. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/data/empty.yaml +2 -0
  822. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/hiera.yaml +5 -0
  823. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/manifests/init.pp +2 -0
  824. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/metadata.json +9 -0
  825. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/data/first.json +4 -0
  826. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/hiera.yaml +8 -0
  827. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/manifests/init.pp +5 -0
  828. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/metadata.json +9 -0
  829. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +9 -0
  830. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/manifests/init.pp +3 -0
  831. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/metadata.json +9 -0
  832. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +10 -0
  833. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +23 -0
  834. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/manifests/init.pp +3 -0
  835. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/metadata.json +9 -0
  836. data/spec/fixtures/unit/module/trailing-comma.json +1 -1
  837. data/spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp +0 -0
  838. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/functions/usee_puppet.pp +3 -0
  839. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb +6 -0
  840. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/type/usee_type.rb +5 -0
  841. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +8 -0
  842. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +1 -0
  843. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee2/lib/puppet/functions/usee2/callee.rb +5 -0
  844. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp +5 -0
  845. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp +5 -0
  846. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp +5 -0
  847. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb +5 -0
  848. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb +5 -0
  849. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb +5 -0
  850. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb +5 -0
  851. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +87 -0
  852. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/metadata.json +2 -1
  853. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +1 -0
  854. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +1 -0
  855. data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +10 -0
  856. data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +0 -0
  857. data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +187 -0
  858. data/spec/fixtures/unit/provider/package/yum/yum-check-update-obsoletes.txt +195 -0
  859. data/spec/fixtures/unit/provider/package/yum/yum-check-update-security.txt +184 -0
  860. data/spec/fixtures/unit/provider/service/smf/svcs.out +4 -3
  861. data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +8 -0
  862. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_get/should_yield_to_the_block.yml +24 -0
  863. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_head/should_yield_to_the_block.yml +24 -0
  864. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_post/should_yield_to_the_block.yml +24 -0
  865. 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
  866. 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
  867. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +213 -0
  868. 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
  869. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +197 -0
  870. 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
  871. 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
  872. data/spec/integration/agent/logging_spec.rb +15 -14
  873. data/spec/integration/application/apply_spec.rb +383 -29
  874. data/spec/integration/application/doc_spec.rb +0 -0
  875. data/spec/integration/application/lookup_spec.rb +155 -0
  876. data/spec/integration/configurer_spec.rb +0 -0
  877. data/spec/integration/data_binding_spec.rb +195 -0
  878. data/spec/integration/defaults_spec.rb +27 -2
  879. data/spec/integration/directory_environments_spec.rb +16 -0
  880. data/spec/integration/environments/default_manifest_spec.rb +16 -16
  881. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  882. data/spec/integration/environments/settings_spec.rb +32 -4
  883. data/spec/integration/faces/ca_spec.rb +0 -0
  884. data/spec/integration/faces/config_spec.rb +80 -0
  885. data/spec/integration/faces/documentation_spec.rb +1 -1
  886. data/spec/integration/file_bucket/file_spec.rb +2 -2
  887. data/spec/integration/file_serving/fileset_spec.rb +0 -0
  888. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -0
  889. data/spec/integration/file_system/uniquefile_spec.rb +29 -0
  890. data/spec/integration/indirector/catalog/compiler_spec.rb +0 -0
  891. data/spec/integration/indirector/direct_file_server_spec.rb +0 -0
  892. data/spec/integration/indirector/facts/facter_spec.rb +38 -0
  893. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -0
  894. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -0
  895. data/spec/integration/indirector/node/ldap_spec.rb +0 -0
  896. data/spec/integration/module_tool/tar/mini_spec.rb +28 -0
  897. data/spec/integration/network/formats_spec.rb +0 -0
  898. data/spec/integration/network/http/api/indirected_routes_spec.rb +33 -0
  899. data/spec/integration/node/environment_spec.rb +34 -0
  900. data/spec/integration/node/facts_spec.rb +0 -0
  901. data/spec/integration/node_spec.rb +0 -0
  902. data/spec/integration/parser/catalog_spec.rb +14 -2
  903. data/spec/integration/parser/collection_spec.rb +18 -0
  904. data/spec/integration/parser/compiler_spec.rb +225 -864
  905. data/spec/integration/parser/dynamic_scoping_spec.rb +67 -0
  906. data/spec/integration/parser/parameter_defaults_spec.rb +358 -0
  907. data/spec/integration/parser/pcore_resource_spec.rb +245 -0
  908. data/spec/integration/parser/resource_expressions_spec.rb +9 -7
  909. data/spec/integration/parser/scope_spec.rb +20 -2
  910. data/spec/integration/parser/undef_param_spec.rb +9 -1
  911. data/spec/integration/provider/mailalias/aliases_spec.rb +0 -0
  912. data/spec/integration/provider/mount_spec.rb +23 -36
  913. data/spec/integration/provider/service/init_spec.rb +0 -0
  914. data/spec/integration/provider/service/windows_spec.rb +3 -2
  915. data/spec/integration/provider/ssh_authorized_key_spec.rb +0 -0
  916. data/spec/integration/provider/yumrepo_spec.rb +4 -1
  917. data/spec/integration/reference/providers_spec.rb +0 -0
  918. data/spec/integration/reports_spec.rb +0 -0
  919. data/spec/integration/resource/catalog_spec.rb +1 -1
  920. data/spec/integration/resource/type_collection_spec.rb +8 -0
  921. data/spec/integration/ssl/autosign_spec.rb +18 -3
  922. data/spec/integration/ssl/certificate_authority_spec.rb +0 -1
  923. data/spec/integration/ssl/certificate_request_spec.rb +0 -1
  924. data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -1
  925. data/spec/integration/ssl/host_spec.rb +0 -1
  926. data/spec/integration/ssl/key_spec.rb +104 -0
  927. data/spec/integration/test/test_helper_spec.rb +32 -0
  928. data/spec/integration/transaction/report_spec.rb +682 -0
  929. data/spec/integration/transaction_spec.rb +125 -1
  930. data/spec/integration/type/exec_spec.rb +0 -0
  931. data/spec/integration/type/file_spec.rb +237 -12
  932. data/spec/integration/type/package_spec.rb +72 -1
  933. data/spec/integration/type/tidy_spec.rb +21 -9
  934. data/spec/integration/type/user_spec.rb +13 -6
  935. data/spec/integration/type_spec.rb +0 -0
  936. data/spec/integration/util/autoload_spec.rb +0 -0
  937. data/spec/integration/util/execution_spec.rb +30 -0
  938. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  939. data/spec/integration/util/settings_spec.rb +26 -0
  940. data/spec/integration/util/windows/adsi_spec.rb +99 -0
  941. data/spec/integration/util/windows/principal_spec.rb +250 -0
  942. data/spec/integration/util/windows/process_spec.rb +35 -2
  943. data/spec/{unit → integration}/util/windows/registry_spec.rb +92 -2
  944. data/spec/integration/util/windows/security_spec.rb +61 -16
  945. data/spec/integration/util/windows/user_spec.rb +27 -5
  946. data/spec/integration/util_spec.rb +49 -27
  947. data/spec/lib/matchers/include_in_order.rb +2 -3
  948. data/spec/lib/puppet/face/1.0.0/huzzah.rb +0 -0
  949. data/spec/lib/puppet/face/basetest.rb +0 -0
  950. data/spec/lib/puppet/face/huzzah.rb +0 -0
  951. data/spec/lib/puppet_spec/compiler.rb +32 -3
  952. data/spec/lib/puppet_spec/files.rb +16 -2
  953. data/spec/lib/puppet_spec/fixtures.rb +0 -0
  954. data/spec/lib/puppet_spec/language.rb +3 -1
  955. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
  956. data/spec/lib/puppet_spec/module_tool/stub_source.rb +1 -1
  957. data/spec/lib/puppet_spec/network.rb +12 -8
  958. data/spec/lib/puppet_spec/pops.rb +13 -0
  959. data/spec/lib/puppet_spec/unindent.rb +5 -0
  960. data/spec/lib/puppet_spec/verbose.rb +0 -0
  961. data/spec/shared_behaviours/all_parsedfile_providers.rb +0 -0
  962. data/spec/shared_behaviours/file_server_terminus.rb +0 -0
  963. data/spec/shared_behaviours/file_serving.rb +0 -0
  964. data/spec/shared_behaviours/iterative_functions.rb +9 -9
  965. data/spec/shared_behaviours/memory_terminus.rb +0 -0
  966. data/spec/shared_behaviours/path_parameters.rb +0 -0
  967. data/spec/shared_behaviours/things_that_declare_options.rb +0 -0
  968. data/spec/shared_contexts/types_setup.rb +106 -0
  969. data/spec/shared_examples/rhel_package_provider.rb +357 -0
  970. data/spec/spec_helper.rb +23 -2
  971. data/spec/unit/agent/locker_spec.rb +4 -4
  972. data/spec/unit/agent_spec.rb +12 -46
  973. data/spec/unit/application/agent_spec.rb +15 -0
  974. data/spec/unit/application/apply_spec.rb +31 -1
  975. data/spec/unit/application/cert_spec.rb +20 -0
  976. data/spec/unit/application/certificate_spec.rb +0 -0
  977. data/spec/unit/application/config_spec.rb +0 -0
  978. data/spec/unit/application/describe_spec.rb +0 -0
  979. data/spec/unit/application/device_spec.rb +0 -0
  980. data/spec/unit/application/doc_spec.rb +0 -0
  981. data/spec/unit/application/face_base_spec.rb +16 -0
  982. data/spec/unit/application/facts_spec.rb +0 -0
  983. data/spec/unit/application/filebucket_spec.rb +88 -2
  984. data/spec/unit/application/indirection_base_spec.rb +0 -0
  985. data/spec/unit/application/inspect_spec.rb +28 -10
  986. data/spec/unit/application/lookup_spec.rb +532 -0
  987. data/spec/unit/application/master_spec.rb +2 -2
  988. data/spec/unit/application/resource_spec.rb +0 -0
  989. data/spec/unit/application_spec.rb +3 -3
  990. data/spec/unit/capability_spec.rb +416 -0
  991. data/spec/unit/configurer/downloader_factory_spec.rb +0 -0
  992. data/spec/unit/configurer/downloader_spec.rb +5 -5
  993. data/spec/unit/configurer/fact_handler_spec.rb +0 -0
  994. data/spec/unit/configurer/plugin_handler_spec.rb +18 -15
  995. data/spec/unit/configurer_spec.rb +336 -39
  996. data/spec/unit/confine/exists_spec.rb +0 -0
  997. data/spec/unit/confine/false_spec.rb +0 -0
  998. data/spec/unit/confine/feature_spec.rb +0 -0
  999. data/spec/unit/confine/true_spec.rb +0 -0
  1000. data/spec/unit/confine/variable_spec.rb +0 -0
  1001. data/spec/unit/confine_collection_spec.rb +0 -0
  1002. data/spec/unit/confine_spec.rb +0 -0
  1003. data/spec/unit/confiner_spec.rb +0 -0
  1004. data/spec/unit/context/trusted_information_spec.rb +24 -1
  1005. data/spec/unit/daemon_spec.rb +18 -8
  1006. data/spec/unit/data_providers/{sample_data_provider_spec.rb → custom_data_provider_spec.rb} +14 -16
  1007. data/spec/unit/data_providers/function_data_provider_spec.rb +21 -3
  1008. data/spec/unit/data_providers/hiera_data_provider_spec.rb +361 -0
  1009. data/spec/unit/defaults_spec.rb +47 -0
  1010. data/spec/unit/environments_spec.rb +26 -4
  1011. data/spec/unit/etc_spec.rb +234 -0
  1012. data/spec/unit/external/pson_spec.rb +0 -0
  1013. data/spec/unit/face/ca_spec.rb +10 -0
  1014. data/spec/unit/face/catalog_spec.rb +0 -0
  1015. data/spec/unit/face/certificate_request_spec.rb +10 -0
  1016. data/spec/unit/face/certificate_revocation_list_spec.rb +10 -0
  1017. data/spec/unit/face/certificate_spec.rb +10 -2
  1018. data/spec/unit/face/config_spec.rb +47 -0
  1019. data/spec/unit/face/epp_face_spec.rb +24 -5
  1020. data/spec/unit/face/facts_spec.rb +0 -0
  1021. data/spec/unit/face/file_spec.rb +4 -0
  1022. data/spec/unit/face/generate_spec.rb +230 -0
  1023. data/spec/unit/face/help_spec.rb +70 -0
  1024. data/spec/unit/face/key_spec.rb +10 -0
  1025. data/spec/unit/face/module/search_spec.rb +1 -1
  1026. data/spec/unit/face/node_spec.rb +1 -1
  1027. data/spec/unit/face/parser_spec.rb +49 -2
  1028. data/spec/unit/face/plugin_spec.rb +29 -4
  1029. data/spec/unit/face/status_spec.rb +10 -0
  1030. data/spec/unit/face_spec.rb +0 -0
  1031. data/spec/unit/file_bucket/dipper_spec.rb +210 -1
  1032. data/spec/unit/file_bucket/file_spec.rb +0 -0
  1033. data/spec/unit/file_serving/base_spec.rb +0 -0
  1034. data/spec/unit/file_serving/configuration/parser_spec.rb +25 -30
  1035. data/spec/unit/file_serving/configuration_spec.rb +1 -1
  1036. data/spec/unit/file_serving/content_spec.rb +0 -0
  1037. data/spec/unit/file_serving/fileset_spec.rb +0 -0
  1038. data/spec/unit/file_serving/http_metadata_spec.rb +85 -0
  1039. data/spec/unit/file_serving/metadata_spec.rb +50 -0
  1040. data/spec/unit/file_serving/mount/file_spec.rb +0 -0
  1041. data/spec/unit/file_serving/mount/modules_spec.rb +0 -0
  1042. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +0 -0
  1043. data/spec/unit/file_serving/mount/plugins_spec.rb +0 -0
  1044. data/spec/unit/file_serving/mount_spec.rb +0 -0
  1045. data/spec/unit/file_serving/terminus_helper_spec.rb +0 -0
  1046. data/spec/unit/file_serving/terminus_selector_spec.rb +12 -2
  1047. data/spec/unit/file_system/uniquefile_spec.rb +20 -0
  1048. data/spec/unit/file_system_spec.rb +335 -6
  1049. data/spec/unit/forge/repository_spec.rb +27 -0
  1050. data/spec/unit/functions/assert_type_spec.rb +48 -8
  1051. data/spec/unit/functions/binary_file_spec.rb +46 -0
  1052. data/spec/unit/functions/break_spec.rb +89 -0
  1053. data/spec/unit/{parser/functions → functions}/contain_spec.rb +68 -3
  1054. data/spec/unit/functions/defined_spec.rb +2 -2
  1055. data/spec/unit/functions/dig_spec.rb +58 -0
  1056. data/spec/unit/functions/epp_spec.rb +17 -9
  1057. data/spec/unit/functions/filter_spec.rb +18 -0
  1058. data/spec/unit/functions/find_file_spec.rb +69 -0
  1059. data/spec/unit/functions/hiera_spec.rb +447 -47
  1060. data/spec/unit/functions/include_spec.rb +175 -0
  1061. data/spec/unit/functions/inline_epp_spec.rb +4 -4
  1062. data/spec/unit/functions/lest_spec.rb +34 -0
  1063. data/spec/unit/functions/logging_spec.rb +54 -0
  1064. data/spec/unit/functions/lookup_fixture_spec.rb +693 -0
  1065. data/spec/unit/functions/lookup_spec.rb +2904 -265
  1066. data/spec/unit/functions/match_spec.rb +2 -2
  1067. data/spec/unit/functions/new_spec.rb +694 -0
  1068. data/spec/unit/functions/next_spec.rb +93 -0
  1069. data/spec/unit/functions/regsubst_spec.rb +26 -9
  1070. data/spec/unit/functions/require_spec.rb +83 -0
  1071. data/spec/unit/functions/return_spec.rb +105 -0
  1072. data/spec/unit/functions/reverse_each_spec.rb +108 -0
  1073. data/spec/unit/functions/scanf_spec.rb +1 -1
  1074. data/spec/unit/{parser/functions → functions}/shared.rb +15 -12
  1075. data/spec/unit/functions/split_spec.rb +3 -3
  1076. data/spec/unit/functions/step_spec.rb +113 -0
  1077. data/spec/unit/functions/strftime_spec.rb +152 -0
  1078. data/spec/unit/functions/then_spec.rb +40 -0
  1079. data/spec/unit/functions/type_spec.rb +35 -0
  1080. data/spec/unit/functions/unwrap_spec.rb +29 -0
  1081. data/spec/unit/functions/versioncmp_spec.rb +36 -0
  1082. data/spec/unit/functions4_spec.rb +270 -79
  1083. data/spec/unit/graph/rb_tree_map_spec.rb +1 -1
  1084. data/spec/unit/graph/relationship_graph_spec.rb +0 -0
  1085. data/spec/unit/graph/sequential_prioritizer_spec.rb +1 -1
  1086. data/spec/unit/graph/simple_graph_spec.rb +1 -1
  1087. data/spec/unit/hiera/scope_spec.rb +6 -3
  1088. data/spec/unit/hiera_puppet_spec.rb +49 -8
  1089. data/spec/unit/indirector/catalog/compiler_spec.rb +752 -8
  1090. data/spec/unit/indirector/catalog/json_spec.rb +0 -0
  1091. data/spec/unit/indirector/catalog/msgpack_spec.rb +0 -0
  1092. data/spec/unit/indirector/catalog/rest_spec.rb +0 -0
  1093. data/spec/unit/indirector/catalog/static_compiler_spec.rb +38 -20
  1094. data/spec/unit/indirector/catalog/store_configs_spec.rb +0 -0
  1095. data/spec/unit/indirector/catalog/yaml_spec.rb +0 -0
  1096. data/spec/unit/indirector/certificate/ca_spec.rb +0 -0
  1097. data/spec/unit/indirector/certificate/disabled_ca_spec.rb +0 -0
  1098. data/spec/unit/indirector/certificate/file_spec.rb +0 -0
  1099. data/spec/unit/indirector/certificate/rest_spec.rb +0 -0
  1100. data/spec/unit/indirector/certificate_request/ca_spec.rb +0 -0
  1101. data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +0 -0
  1102. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -0
  1103. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -0
  1104. data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +0 -0
  1105. data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +0 -0
  1106. data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +0 -0
  1107. data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +0 -0
  1108. data/spec/unit/indirector/certificate_status/file_spec.rb +0 -0
  1109. data/spec/unit/indirector/certificate_status/rest_spec.rb +0 -0
  1110. data/spec/unit/indirector/code_spec.rb +0 -0
  1111. data/spec/unit/indirector/data_binding/none_spec.rb +2 -2
  1112. data/spec/unit/indirector/direct_file_server_spec.rb +0 -0
  1113. data/spec/unit/indirector/envelope_spec.rb +0 -0
  1114. data/spec/unit/indirector/exec_spec.rb +0 -0
  1115. data/spec/unit/indirector/face_spec.rb +10 -2
  1116. data/spec/unit/indirector/facts/facter_spec.rb +3 -10
  1117. data/spec/unit/indirector/facts/network_device_spec.rb +0 -0
  1118. data/spec/unit/indirector/facts/store_configs_spec.rb +0 -0
  1119. data/spec/unit/indirector/facts/yaml_spec.rb +0 -0
  1120. data/spec/unit/indirector/file_bucket_file/file_spec.rb +86 -4
  1121. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +0 -0
  1122. data/spec/unit/indirector/file_content/file_server_spec.rb +0 -0
  1123. data/spec/unit/indirector/file_content/file_spec.rb +0 -0
  1124. data/spec/unit/indirector/file_content/rest_spec.rb +0 -0
  1125. data/spec/unit/indirector/file_metadata/file_server_spec.rb +0 -0
  1126. data/spec/unit/indirector/file_metadata/file_spec.rb +0 -0
  1127. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -0
  1128. data/spec/unit/indirector/file_server_spec.rb +0 -0
  1129. data/spec/unit/indirector/indirection_spec.rb +13 -2
  1130. data/spec/unit/indirector/json_spec.rb +1 -1
  1131. data/spec/unit/indirector/key/ca_spec.rb +0 -0
  1132. data/spec/unit/indirector/key/disabled_ca_spec.rb +0 -0
  1133. data/spec/unit/indirector/key/file_spec.rb +1 -1
  1134. data/spec/unit/indirector/ldap_spec.rb +0 -0
  1135. data/spec/unit/indirector/memory_spec.rb +0 -0
  1136. data/spec/unit/indirector/msgpack_spec.rb +11 -1
  1137. data/spec/unit/indirector/node/exec_spec.rb +0 -0
  1138. data/spec/unit/indirector/node/ldap_spec.rb +0 -0
  1139. data/spec/unit/indirector/node/memory_spec.rb +0 -0
  1140. data/spec/unit/indirector/node/msgpack_spec.rb +0 -0
  1141. data/spec/unit/indirector/node/plain_spec.rb +0 -0
  1142. data/spec/unit/indirector/node/rest_spec.rb +0 -0
  1143. data/spec/unit/indirector/node/store_configs_spec.rb +0 -0
  1144. data/spec/unit/indirector/node/yaml_spec.rb +0 -0
  1145. data/spec/unit/indirector/plain_spec.rb +0 -0
  1146. data/spec/unit/indirector/report/msgpack_spec.rb +0 -0
  1147. data/spec/unit/indirector/report/processor_spec.rb +0 -0
  1148. data/spec/unit/indirector/report/rest_spec.rb +0 -0
  1149. data/spec/unit/indirector/report/yaml_spec.rb +0 -0
  1150. data/spec/unit/indirector/request_spec.rb +17 -8
  1151. data/spec/unit/indirector/resource/ral_spec.rb +0 -0
  1152. data/spec/unit/indirector/resource/store_configs_spec.rb +0 -0
  1153. data/spec/unit/indirector/resource_type/parser_spec.rb +5 -0
  1154. data/spec/unit/indirector/resource_type/rest_spec.rb +0 -0
  1155. data/spec/unit/indirector/rest_spec.rb +107 -9
  1156. data/spec/unit/indirector/ssl_file_spec.rb +4 -4
  1157. data/spec/unit/indirector/status/rest_spec.rb +0 -0
  1158. data/spec/unit/indirector/store_configs_spec.rb +0 -0
  1159. data/spec/unit/indirector/terminus_spec.rb +0 -0
  1160. data/spec/unit/indirector/yaml_spec.rb +1 -1
  1161. data/spec/unit/indirector_spec.rb +0 -0
  1162. data/spec/unit/info_service_spec.rb +298 -0
  1163. data/spec/unit/interface/action_builder_spec.rb +0 -0
  1164. data/spec/unit/interface/action_manager_spec.rb +0 -0
  1165. data/spec/unit/interface/action_spec.rb +0 -0
  1166. data/spec/unit/interface/documentation_spec.rb +0 -0
  1167. data/spec/unit/interface/face_collection_spec.rb +0 -0
  1168. data/spec/unit/interface/option_builder_spec.rb +0 -0
  1169. data/spec/unit/interface/option_spec.rb +0 -0
  1170. data/spec/unit/interface_spec.rb +27 -0
  1171. data/spec/unit/man_spec.rb +1 -1
  1172. data/spec/unit/module_spec.rb +118 -74
  1173. data/spec/unit/module_tool/application_spec.rb +1 -1
  1174. data/spec/unit/module_tool/applications/builder_spec.rb +44 -9
  1175. data/spec/unit/module_tool/applications/installer_spec.rb +11 -2
  1176. data/spec/unit/module_tool/applications/unpacker_spec.rb +2 -1
  1177. data/spec/unit/module_tool/applications/upgrader_spec.rb +9 -1
  1178. data/spec/unit/module_tool/installed_modules_spec.rb +6 -6
  1179. data/spec/unit/module_tool/metadata_spec.rb +31 -2
  1180. data/spec/unit/module_tool/tar/mini_spec.rb +3 -3
  1181. data/spec/unit/module_tool_spec.rb +3 -3
  1182. data/spec/unit/network/auth_config_parser_spec.rb +16 -0
  1183. data/spec/unit/network/authconfig_spec.rb +62 -32
  1184. data/spec/unit/network/authorization_spec.rb +30 -2
  1185. data/spec/unit/network/authstore_spec.rb +2 -2
  1186. data/spec/unit/network/format_handler_spec.rb +0 -0
  1187. data/spec/unit/network/format_spec.rb +0 -0
  1188. data/spec/unit/network/formats_spec.rb +0 -0
  1189. data/spec/unit/network/http/api/indirected_routes_spec.rb +70 -71
  1190. data/spec/unit/network/http/api/master/v3/environment_spec.rb +60 -0
  1191. data/spec/unit/network/http/api/master/v3_spec.rb +22 -4
  1192. data/spec/unit/network/http/compression_spec.rb +40 -9
  1193. data/spec/unit/network/http/connection_spec.rb +25 -19
  1194. data/spec/unit/network/http/error_spec.rb +2 -1
  1195. data/spec/unit/network/http/factory_spec.rb +18 -0
  1196. data/spec/unit/network/http/handler_spec.rb +11 -8
  1197. data/spec/unit/network/http/nocache_pool_spec.rb +0 -0
  1198. data/spec/unit/network/http/pool_spec.rb +30 -0
  1199. data/spec/unit/network/http/rack/rest_spec.rb +7 -0
  1200. data/spec/unit/network/http/rack_spec.rb +0 -0
  1201. data/spec/unit/network/http/session_spec.rb +0 -0
  1202. data/spec/unit/network/http/site_spec.rb +0 -0
  1203. data/spec/unit/network/http/webrick/rest_spec.rb +0 -0
  1204. data/spec/unit/network/http/webrick_spec.rb +1 -1
  1205. data/spec/unit/network/http_pool_spec.rb +0 -0
  1206. data/spec/unit/network/http_spec.rb +0 -0
  1207. data/spec/unit/network/resolver_spec.rb +0 -0
  1208. data/spec/unit/network/rights_spec.rb +4 -4
  1209. data/spec/unit/network/server_spec.rb +0 -0
  1210. data/spec/unit/node/environment_spec.rb +10 -0
  1211. data/spec/unit/node/facts_spec.rb +0 -0
  1212. data/spec/unit/node_spec.rb +35 -0
  1213. data/spec/unit/other/selinux_spec.rb +0 -0
  1214. data/spec/unit/parameter/path_spec.rb +0 -0
  1215. data/spec/unit/parameter/value_collection_spec.rb +0 -0
  1216. data/spec/unit/parameter/value_spec.rb +0 -0
  1217. data/spec/unit/parameter_spec.rb +11 -0
  1218. data/spec/unit/parser/ast/leaf_spec.rb +1 -1
  1219. data/spec/unit/parser/compiler_spec.rb +134 -33
  1220. data/spec/unit/parser/environment_compiler_spec.rb +688 -0
  1221. data/spec/unit/parser/files_spec.rb +0 -0
  1222. data/spec/unit/parser/functions/create_resources_spec.rb +86 -5
  1223. data/spec/unit/parser/functions/digest_spec.rb +0 -0
  1224. data/spec/unit/parser/functions/fail_spec.rb +0 -0
  1225. data/spec/unit/parser/functions/file_spec.rb +0 -0
  1226. data/spec/unit/parser/functions/fqdn_rand_spec.rb +6 -2
  1227. data/spec/unit/parser/functions/generate_spec.rb +3 -12
  1228. data/spec/unit/parser/functions/hiera_array_spec.rb +1 -1
  1229. data/spec/unit/parser/functions/hiera_hash_spec.rb +1 -1
  1230. data/spec/unit/parser/functions/hiera_include_spec.rb +1 -1
  1231. data/spec/unit/parser/functions/hiera_spec.rb +1 -1
  1232. data/spec/unit/parser/functions/inline_template_spec.rb +0 -0
  1233. data/spec/unit/parser/functions/lookup_spec.rb +1 -1
  1234. data/spec/unit/parser/functions/realize_spec.rb +0 -0
  1235. data/spec/unit/parser/functions/regsubst_spec.rb +1 -1
  1236. data/spec/unit/parser/functions/scanf_spec.rb +0 -0
  1237. data/spec/unit/parser/functions/shellquote_spec.rb +0 -0
  1238. data/spec/unit/parser/functions/split_spec.rb +1 -1
  1239. data/spec/unit/parser/functions/sprintf_spec.rb +0 -0
  1240. data/spec/unit/parser/functions/tag_spec.rb +0 -0
  1241. data/spec/unit/parser/functions/template_spec.rb +0 -0
  1242. data/spec/unit/parser/functions/versioncmp_spec.rb +0 -0
  1243. data/spec/unit/parser/functions_spec.rb +0 -0
  1244. data/spec/unit/parser/relationship_spec.rb +0 -0
  1245. data/spec/unit/parser/resource/param_spec.rb +0 -0
  1246. data/spec/unit/parser/resource_spec.rb +31 -32
  1247. data/spec/unit/parser/scope_spec.rb +83 -16
  1248. data/spec/unit/parser/templatewrapper_spec.rb +0 -0
  1249. data/spec/unit/parser/type_loader_spec.rb +0 -0
  1250. data/spec/unit/pops/binder/config/binder_config_spec.rb +1 -1
  1251. data/spec/unit/pops/binder/injector_spec.rb +3 -3
  1252. data/spec/unit/pops/evaluator/access_ops_spec.rb +115 -19
  1253. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +170 -0
  1254. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +1 -2
  1255. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
  1256. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +76 -23
  1257. data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +29 -25
  1258. data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +63 -0
  1259. data/spec/unit/pops/evaluator/literal_evaluator_spec.rb +43 -0
  1260. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +133 -0
  1261. data/spec/unit/pops/evaluator/variables_spec.rb +1 -1
  1262. data/spec/unit/pops/label_provider_spec.rb +5 -1
  1263. data/spec/unit/pops/loaders/dependency_loader_spec.rb +66 -1
  1264. data/spec/unit/pops/loaders/environment_loader_spec.rb +172 -0
  1265. data/spec/unit/pops/loaders/loader_paths_spec.rb +1 -1
  1266. data/spec/unit/pops/loaders/loaders_spec.rb +323 -27
  1267. data/spec/unit/pops/loaders/module_loaders_spec.rb +63 -2
  1268. data/spec/unit/pops/loaders/static_loader_spec.rb +83 -18
  1269. data/spec/unit/pops/lookup/context_spec.rb +334 -0
  1270. data/spec/unit/pops/lookup/interpolation_spec.rb +333 -0
  1271. data/spec/unit/pops/lookup/lookup_spec.rb +262 -0
  1272. data/spec/unit/pops/merge_strategy_spec.rb +18 -0
  1273. data/spec/unit/pops/parser/lexer2_spec.rb +236 -10
  1274. data/spec/unit/pops/parser/parse_application_spec.rb +35 -0
  1275. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +31 -0
  1276. data/spec/unit/pops/parser/parse_calls_spec.rb +25 -0
  1277. data/spec/unit/pops/parser/parse_capabilities_spec.rb +40 -0
  1278. data/spec/unit/pops/parser/parse_functions_spec.rb +19 -0
  1279. data/spec/unit/pops/parser/parse_lambda_spec.rb +19 -0
  1280. data/spec/unit/pops/parser/parse_site_spec.rb +51 -0
  1281. data/spec/unit/pops/parser/parser_rspec_helper.rb +6 -0
  1282. data/spec/unit/pops/parser/parser_spec.rb +28 -0
  1283. data/spec/unit/pops/parser/source_pos_adapter_spec.rb +26 -0
  1284. data/spec/unit/pops/puppet_stack_spec.rb +79 -0
  1285. data/spec/unit/pops/resource/resource_type_impl_spec.rb +111 -0
  1286. data/spec/unit/pops/serialization/packer_spec.rb +154 -0
  1287. data/spec/unit/pops/serialization/rgen_spec.rb +88 -0
  1288. data/spec/unit/pops/serialization/serialization_spec.rb +314 -0
  1289. data/spec/unit/pops/time/timespan_spec.rb +121 -0
  1290. data/spec/unit/pops/types/enumeration_spec.rb +13 -12
  1291. data/spec/unit/pops/types/iterable_spec.rb +262 -0
  1292. data/spec/unit/pops/types/p_binary_type_spec.rb +243 -0
  1293. data/spec/unit/pops/types/p_object_type_spec.rb +1167 -0
  1294. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +327 -0
  1295. data/spec/unit/pops/types/p_sensitive_type_spec.rb +169 -0
  1296. data/spec/unit/pops/types/p_timespan_type_spec.rb +273 -0
  1297. data/spec/unit/pops/types/p_timestamp_type_spec.rb +311 -0
  1298. data/spec/unit/pops/types/p_type_set_type_spec.rb +453 -0
  1299. data/spec/unit/pops/types/recursion_guard_spec.rb +93 -0
  1300. data/spec/unit/pops/types/ruby_generator_spec.rb +625 -0
  1301. data/spec/unit/pops/types/string_converter_spec.rb +1029 -0
  1302. data/spec/unit/pops/types/type_acceptor_spec.rb +106 -0
  1303. data/spec/unit/pops/types/type_asserter_spec.rb +43 -0
  1304. data/spec/unit/pops/types/type_calculator_spec.rb +965 -934
  1305. data/spec/unit/pops/types/type_factory_spec.rb +132 -91
  1306. data/spec/unit/pops/types/type_formatter_spec.rb +396 -0
  1307. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +228 -0
  1308. data/spec/unit/pops/types/type_parser_spec.rb +203 -36
  1309. data/spec/unit/pops/types/types_spec.rb +599 -0
  1310. data/spec/unit/pops/validator/validator_spec.rb +400 -18
  1311. data/spec/unit/property/ensure_spec.rb +0 -0
  1312. data/spec/unit/property/keyvalue_spec.rb +0 -0
  1313. data/spec/unit/property/list_spec.rb +0 -0
  1314. data/spec/unit/property/ordered_list_spec.rb +0 -0
  1315. data/spec/unit/property_spec.rb +49 -12
  1316. data/spec/unit/provider/augeas/augeas_spec.rb +59 -0
  1317. data/spec/unit/provider/cisco_spec.rb +0 -0
  1318. data/spec/unit/provider/command_spec.rb +0 -0
  1319. data/spec/unit/provider/cron/crontab_spec.rb +0 -0
  1320. data/spec/unit/provider/cron/parsed_spec.rb +1 -0
  1321. data/spec/unit/provider/exec/posix_spec.rb +0 -0
  1322. data/spec/unit/provider/exec/shell_spec.rb +0 -0
  1323. data/spec/unit/provider/exec/windows_spec.rb +0 -0
  1324. data/spec/unit/provider/exec_spec.rb +0 -0
  1325. data/spec/unit/provider/file/posix_spec.rb +0 -0
  1326. data/spec/unit/provider/file/windows_spec.rb +0 -0
  1327. data/spec/unit/provider/group/directoryservice_spec.rb +33 -0
  1328. data/spec/unit/provider/group/groupadd_spec.rb +0 -0
  1329. data/spec/unit/provider/group/ldap_spec.rb +0 -0
  1330. data/spec/unit/provider/group/pw_spec.rb +0 -0
  1331. data/spec/unit/provider/group/windows_adsi_spec.rb +31 -9
  1332. data/spec/unit/provider/host/parsed_spec.rb +0 -0
  1333. data/spec/unit/provider/interface/cisco_spec.rb +0 -0
  1334. data/spec/unit/provider/ldap_spec.rb +0 -0
  1335. data/spec/unit/provider/macauthorization_spec.rb +5 -2
  1336. data/spec/unit/provider/mcx/mcxcontent_spec.rb +0 -0
  1337. data/spec/unit/provider/mount/parsed_spec.rb +0 -0
  1338. data/spec/unit/provider/mount_spec.rb +0 -0
  1339. data/spec/unit/provider/naginator_spec.rb +0 -0
  1340. data/spec/unit/provider/nameservice/directoryservice_spec.rb +14 -19
  1341. data/spec/unit/provider/nameservice_spec.rb +54 -12
  1342. data/spec/unit/provider/network_device_spec.rb +0 -0
  1343. data/spec/unit/provider/package/aix_spec.rb +0 -0
  1344. data/spec/unit/provider/package/appdmg_spec.rb +3 -3
  1345. data/spec/unit/provider/package/apt_spec.rb +0 -0
  1346. data/spec/unit/provider/package/aptitude_spec.rb +0 -0
  1347. data/spec/unit/provider/package/aptrpm_spec.rb +3 -3
  1348. data/spec/unit/provider/package/base_spec.rb +18 -0
  1349. data/spec/unit/provider/package/dnf_spec.rb +30 -0
  1350. data/spec/unit/provider/package/dpkg_spec.rb +0 -0
  1351. data/spec/unit/provider/package/freebsd_spec.rb +0 -0
  1352. data/spec/unit/provider/package/gem_spec.rb +77 -0
  1353. data/spec/unit/provider/package/hpux_spec.rb +0 -0
  1354. data/spec/unit/provider/package/macports_spec.rb +0 -0
  1355. data/spec/unit/provider/package/nim_spec.rb +6 -6
  1356. data/spec/unit/provider/package/openbsd_spec.rb +0 -0
  1357. data/spec/unit/provider/package/opkg_spec.rb +0 -0
  1358. data/spec/unit/provider/package/pacman_spec.rb +55 -0
  1359. data/spec/unit/provider/package/pip3_spec.rb +22 -0
  1360. data/spec/unit/provider/package/pip_spec.rb +164 -46
  1361. data/spec/unit/provider/package/pkg_spec.rb +139 -99
  1362. data/spec/unit/provider/package/pkgdmg_spec.rb +32 -8
  1363. data/spec/unit/provider/package/pkgin_spec.rb +23 -13
  1364. data/spec/unit/provider/package/pkgng_spec.rb +16 -2
  1365. data/spec/unit/provider/package/pkgutil_spec.rb +0 -0
  1366. data/spec/unit/provider/package/portage_spec.rb +64 -8
  1367. data/spec/unit/provider/package/puppet_gem_spec.rb +0 -0
  1368. data/spec/unit/provider/package/rpm_spec.rb +170 -12
  1369. data/spec/unit/provider/package/sun_spec.rb +0 -0
  1370. data/spec/unit/provider/package/tdnf_spec.rb +18 -0
  1371. data/spec/unit/provider/package/windows/package_spec.rb +45 -1
  1372. data/spec/unit/provider/package/windows_spec.rb +8 -2
  1373. data/spec/unit/provider/package/yum_spec.rb +29 -466
  1374. data/spec/unit/provider/package/zypper_spec.rb +14 -0
  1375. data/spec/unit/provider/parsedfile_spec.rb +0 -0
  1376. data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +211 -0
  1377. data/spec/unit/provider/selboolean_spec.rb +0 -0
  1378. data/spec/unit/provider/selmodule_spec.rb +0 -0
  1379. data/spec/unit/provider/service/base_spec.rb +6 -0
  1380. data/spec/unit/provider/service/bsd_spec.rb +130 -0
  1381. data/spec/unit/provider/service/daemontools_spec.rb +0 -0
  1382. data/spec/unit/provider/service/debian_spec.rb +34 -4
  1383. data/spec/unit/provider/service/freebsd_spec.rb +16 -0
  1384. data/spec/unit/provider/service/gentoo_spec.rb +7 -0
  1385. data/spec/unit/provider/service/init_spec.rb +24 -1
  1386. data/spec/unit/provider/service/launchd_spec.rb +124 -25
  1387. data/spec/unit/provider/service/openbsd_spec.rb +0 -0
  1388. data/spec/unit/provider/service/openrc_spec.rb +7 -0
  1389. data/spec/unit/provider/service/openwrt_spec.rb +0 -0
  1390. data/spec/unit/provider/service/rcng_spec.rb +41 -0
  1391. data/spec/unit/provider/service/redhat_spec.rb +8 -1
  1392. data/spec/unit/provider/service/runit_spec.rb +0 -0
  1393. data/spec/unit/provider/service/smf_spec.rb +77 -13
  1394. data/spec/unit/provider/service/src_spec.rb +31 -4
  1395. data/spec/unit/provider/service/systemd_spec.rb +228 -39
  1396. data/spec/unit/provider/service/upstart_spec.rb +64 -0
  1397. data/spec/unit/provider/service/windows_spec.rb +0 -0
  1398. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +2 -1
  1399. data/spec/unit/provider/sshkey/parsed_spec.rb +42 -18
  1400. data/spec/unit/provider/user/aix_spec.rb +7 -0
  1401. data/spec/unit/provider/user/directoryservice_spec.rb +164 -83
  1402. data/spec/unit/provider/user/hpux_spec.rb +0 -0
  1403. data/spec/unit/provider/user/ldap_spec.rb +0 -0
  1404. data/spec/unit/provider/user/openbsd_spec.rb +0 -0
  1405. data/spec/unit/provider/user/pw_spec.rb +0 -0
  1406. data/spec/unit/provider/user/user_role_add_spec.rb +0 -0
  1407. data/spec/unit/provider/user/useradd_spec.rb +1 -0
  1408. data/spec/unit/provider/user/windows_adsi_spec.rb +30 -6
  1409. data/spec/unit/provider/vlan/cisco_spec.rb +0 -0
  1410. data/spec/unit/provider/yumrepo/inifile_spec.rb +16 -0
  1411. data/spec/unit/provider/zfs/zfs_spec.rb +0 -0
  1412. data/spec/unit/provider/zone/solaris_spec.rb +64 -12
  1413. data/spec/unit/provider/zpool/zpool_spec.rb +0 -0
  1414. data/spec/unit/provider_spec.rb +0 -0
  1415. data/spec/unit/puppet_spec.rb +15 -1
  1416. data/spec/unit/relationship_spec.rb +0 -0
  1417. data/spec/unit/reports/http_spec.rb +0 -0
  1418. data/spec/unit/reports/store_spec.rb +0 -0
  1419. data/spec/unit/reports_spec.rb +10 -0
  1420. data/spec/unit/resource/capability_finder_spec.rb +147 -0
  1421. data/spec/unit/resource/catalog_spec.rb +235 -10
  1422. data/spec/unit/resource/status_spec.rb +0 -0
  1423. data/spec/unit/resource/type_collection_spec.rb +23 -2
  1424. data/spec/unit/resource/type_spec.rb +169 -12
  1425. data/spec/unit/resource_spec.rb +137 -48
  1426. data/spec/unit/semver_spec.rb +241 -0
  1427. data/spec/unit/settings/directory_setting_spec.rb +0 -0
  1428. data/spec/unit/settings/duration_setting_spec.rb +0 -0
  1429. data/spec/unit/settings/environment_conf_spec.rb +18 -1
  1430. data/spec/unit/settings/file_setting_spec.rb +37 -0
  1431. data/spec/unit/settings/ini_file_spec.rb +58 -1
  1432. data/spec/unit/settings/path_setting_spec.rb +0 -0
  1433. data/spec/unit/settings/priority_setting_spec.rb +0 -0
  1434. data/spec/unit/settings_spec.rb +105 -3
  1435. data/spec/unit/ssl/base_spec.rb +9 -0
  1436. data/spec/unit/ssl/certificate_authority/interface_spec.rb +180 -13
  1437. data/spec/unit/ssl/certificate_authority_spec.rb +82 -28
  1438. data/spec/unit/ssl/certificate_factory_spec.rb +2 -2
  1439. data/spec/unit/ssl/certificate_request_attributes_spec.rb +6 -0
  1440. data/spec/unit/ssl/certificate_request_spec.rb +4 -5
  1441. data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -3
  1442. data/spec/unit/ssl/certificate_spec.rb +1 -1
  1443. data/spec/unit/ssl/configuration_spec.rb +11 -2
  1444. data/spec/unit/ssl/host_spec.rb +3 -3
  1445. data/spec/unit/ssl/inventory_spec.rb +27 -3
  1446. data/spec/unit/ssl/key_spec.rb +7 -7
  1447. data/spec/unit/ssl/oids_spec.rb +24 -13
  1448. data/spec/unit/status_spec.rb +0 -0
  1449. data/spec/unit/transaction/additional_resource_generator_spec.rb +160 -31
  1450. data/spec/unit/transaction/event_manager_spec.rb +0 -0
  1451. data/spec/unit/transaction/event_spec.rb +3 -1
  1452. data/spec/unit/transaction/persistence_spec.rb +178 -0
  1453. data/spec/unit/transaction/report_spec.rb +138 -2
  1454. data/spec/unit/transaction/resource_harness_spec.rb +81 -37
  1455. data/spec/unit/transaction_spec.rb +50 -0
  1456. data/spec/unit/type/augeas_spec.rb +0 -0
  1457. data/spec/unit/type/component_spec.rb +0 -0
  1458. data/spec/unit/type/computer_spec.rb +0 -0
  1459. data/spec/unit/type/cron_spec.rb +0 -0
  1460. data/spec/unit/type/exec_spec.rb +57 -12
  1461. data/spec/unit/type/file/checksum_spec.rb +6 -0
  1462. data/spec/unit/type/file/checksum_value_spec.rb +286 -0
  1463. data/spec/unit/type/file/content_spec.rb +59 -208
  1464. data/spec/unit/type/file/ctime_spec.rb +0 -0
  1465. data/spec/unit/type/file/ensure_spec.rb +0 -0
  1466. data/spec/unit/type/file/group_spec.rb +0 -0
  1467. data/spec/unit/type/file/mode_spec.rb +0 -0
  1468. data/spec/unit/type/file/mtime_spec.rb +0 -0
  1469. data/spec/unit/type/file/owner_spec.rb +0 -0
  1470. data/spec/unit/type/file/selinux_spec.rb +0 -0
  1471. data/spec/unit/type/file/source_spec.rb +211 -119
  1472. data/spec/unit/type/file/type_spec.rb +0 -0
  1473. data/spec/unit/type/file_spec.rb +165 -35
  1474. data/spec/unit/type/filebucket_spec.rb +0 -0
  1475. data/spec/unit/type/group_spec.rb +0 -0
  1476. data/spec/unit/type/host_spec.rb +4 -4
  1477. data/spec/unit/type/interface_spec.rb +32 -0
  1478. data/spec/unit/type/k5login_spec.rb +0 -0
  1479. data/spec/unit/type/macauthorization_spec.rb +4 -1
  1480. data/spec/unit/type/mailalias_spec.rb +0 -0
  1481. data/spec/unit/type/maillist_spec.rb +0 -0
  1482. data/spec/unit/type/mcx_spec.rb +0 -0
  1483. data/spec/unit/type/mount_spec.rb +50 -8
  1484. data/spec/unit/type/nagios_spec.rb +0 -0
  1485. data/spec/unit/type/noop_metaparam_spec.rb +0 -0
  1486. data/spec/unit/type/package/package_settings_spec.rb +0 -0
  1487. data/spec/unit/type/package_spec.rb +1 -0
  1488. data/spec/unit/type/resources_spec.rb +0 -0
  1489. data/spec/unit/type/schedule_spec.rb +0 -0
  1490. data/spec/unit/type/selboolean_spec.rb +0 -0
  1491. data/spec/unit/type/selmodule_spec.rb +0 -0
  1492. data/spec/unit/type/service_spec.rb +21 -0
  1493. data/spec/unit/type/ssh_authorized_key_spec.rb +0 -0
  1494. data/spec/unit/type/sshkey_spec.rb +0 -0
  1495. data/spec/unit/type/stage_spec.rb +0 -0
  1496. data/spec/unit/type/tidy_spec.rb +4 -4
  1497. data/spec/unit/type/user_spec.rb +40 -7
  1498. data/spec/unit/type/vlan_spec.rb +1 -1
  1499. data/spec/unit/type/whit_spec.rb +0 -0
  1500. data/spec/unit/type/yumrepo_spec.rb +3 -7
  1501. data/spec/unit/type/zfs_spec.rb +0 -0
  1502. data/spec/unit/type/zone_spec.rb +0 -0
  1503. data/spec/unit/type/zpool_spec.rb +0 -0
  1504. data/spec/unit/type_spec.rb +119 -1
  1505. data/spec/unit/util/autoload_spec.rb +0 -0
  1506. data/spec/unit/util/backups_spec.rb +0 -0
  1507. data/spec/unit/util/character_encoding_spec.rb +88 -0
  1508. data/spec/unit/util/checksums_spec.rb +0 -0
  1509. data/spec/unit/util/colors_spec.rb +0 -0
  1510. data/spec/unit/util/command_line_spec.rb +11 -0
  1511. data/spec/unit/util/constant_inflector_spec.rb +0 -0
  1512. data/spec/unit/util/diff_spec.rb +0 -0
  1513. data/spec/unit/util/errors_spec.rb +0 -0
  1514. data/spec/unit/util/execution_spec.rb +13 -1
  1515. data/spec/unit/util/execution_stub_spec.rb +0 -0
  1516. data/spec/unit/util/feature_spec.rb +1 -1
  1517. data/spec/unit/util/filetype_spec.rb +4 -4
  1518. data/spec/unit/util/http_proxy_spec.rb +91 -0
  1519. data/spec/unit/util/ldap/connection_spec.rb +0 -0
  1520. data/spec/unit/util/ldap/generator_spec.rb +1 -1
  1521. data/spec/unit/util/ldap/manager_spec.rb +0 -0
  1522. data/spec/unit/util/log/destinations_spec.rb +0 -2
  1523. data/spec/unit/util/log_spec.rb +12 -1
  1524. data/spec/unit/util/logging_spec.rb +69 -0
  1525. data/spec/unit/util/metric_spec.rb +0 -0
  1526. data/spec/unit/util/monkey_patches_spec.rb +95 -3
  1527. data/spec/unit/util/multi_match_spec.rb +39 -0
  1528. data/spec/unit/util/nagios_maker_spec.rb +0 -0
  1529. data/spec/unit/util/network_device/cisco/device_spec.rb +253 -216
  1530. data/spec/unit/util/network_device/cisco/facts_spec.rb +0 -0
  1531. data/spec/unit/util/network_device/cisco/interface_spec.rb +0 -0
  1532. data/spec/unit/util/network_device/config_spec.rb +0 -0
  1533. data/spec/unit/util/network_device/ipcalc_spec.rb +0 -0
  1534. data/spec/unit/util/network_device/transport/base_spec.rb +0 -0
  1535. data/spec/unit/util/network_device/transport/ssh_spec.rb +1 -1
  1536. data/spec/unit/util/network_device/transport/telnet_spec.rb +60 -58
  1537. data/spec/unit/util/network_device_spec.rb +1 -1
  1538. data/spec/unit/util/package_spec.rb +0 -0
  1539. data/spec/unit/util/plist_spec.rb +135 -0
  1540. data/spec/unit/util/posix_spec.rb +0 -0
  1541. data/spec/unit/util/rdoc_spec.rb +0 -0
  1542. data/spec/unit/util/resource_template_spec.rb +2 -2
  1543. data/spec/unit/util/retry_action_spec.rb +0 -0
  1544. data/spec/unit/util/run_mode_spec.rb +27 -3
  1545. data/spec/unit/util/selinux_spec.rb +0 -0
  1546. data/spec/unit/util/splayer_spec.rb +45 -0
  1547. data/spec/unit/util/storage_spec.rb +8 -1
  1548. data/spec/unit/util/suidmanager_spec.rb +0 -0
  1549. data/spec/unit/util/symbolic_file_mode_spec.rb +0 -0
  1550. data/spec/unit/util/tagging_spec.rb +4 -0
  1551. data/spec/unit/util/user_attr_spec.rb +0 -0
  1552. data/spec/unit/util/warnings_spec.rb +0 -0
  1553. data/spec/unit/util/windows/adsi_spec.rb +82 -40
  1554. data/spec/unit/util/windows/api_types_spec.rb +42 -0
  1555. data/spec/unit/util/windows/file_spec.rb +89 -0
  1556. data/spec/unit/util/windows/root_certs_spec.rb +0 -0
  1557. data/spec/unit/util/windows/security_descriptor_spec.rb +3 -3
  1558. data/spec/unit/util/windows/sid_spec.rb +76 -14
  1559. data/spec/unit/util/yaml_spec.rb +13 -1
  1560. data/spec/unit/util_spec.rb +219 -15
  1561. data/spec/unit/version_spec.rb +19 -0
  1562. data/spec/watchr.rb +0 -0
  1563. data/tasks/cfpropertylist.rake +15 -0
  1564. metadata +724 -115
  1565. data/ext/puppet-nm-dispatcher +0 -13
  1566. data/ext/puppetlisten/puppetlisten.rb +0 -77
  1567. data/ext/puppetlisten/puppetrun.rb +0 -38
  1568. data/ext/systemd/puppetmaster.service +0 -11
  1569. data/lib/puppet/pops/evaluator/callable_mismatch_describer.rb +0 -175
  1570. data/lib/puppet/pops/types/types_meta.rb +0 -234
  1571. data/lib/puppet/resource/type_collection_helper.rb +0 -7
  1572. data/lib/puppet/vendor/load_plist.rb +0 -1
  1573. data/lib/puppet/vendor/plist/CHANGELOG +0 -82
  1574. data/lib/puppet/vendor/plist/MIT-LICENSE +0 -21
  1575. data/lib/puppet/vendor/plist/PUPPET_README.md +0 -6
  1576. data/lib/puppet/vendor/plist/README +0 -36
  1577. data/lib/puppet/vendor/plist/Rakefile +0 -144
  1578. data/lib/puppet/vendor/plist/docs/USAGE +0 -104
  1579. data/lib/puppet/vendor/plist/docs/jamis-template.rb +0 -591
  1580. data/lib/puppet/vendor/plist/lib/plist/generator.rb +0 -224
  1581. data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
  1582. data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
  1583. data/lib/puppet/vendor/plist/test/assets/AlbumData.xml +0 -203
  1584. data/lib/puppet/vendor/plist/test/assets/Cookies.plist +0 -104
  1585. data/lib/puppet/vendor/plist/test/assets/commented.plist +0 -9
  1586. data/lib/puppet/vendor/plist/test/assets/example_data.bin +0 -0
  1587. data/lib/puppet/vendor/plist/test/assets/example_data.jpg +0 -0
  1588. data/lib/puppet/vendor/plist/test/assets/example_data.plist +0 -259
  1589. data/lib/puppet/vendor/plist/test/assets/test_data_elements.plist +0 -24
  1590. data/lib/puppet/vendor/plist/test/assets/test_empty_key.plist +0 -13
  1591. data/lib/puppet/vendor/plist/test/test_data_elements.rb +0 -115
  1592. data/lib/puppet/vendor/plist/test/test_generator.rb +0 -59
  1593. data/lib/puppet/vendor/plist/test/test_generator_basic_types.rb +0 -58
  1594. data/lib/puppet/vendor/plist/test/test_generator_collections.rb +0 -82
  1595. data/lib/puppet/vendor/plist/test/test_parser.rb +0 -90
  1596. data/lib/puppet/vendor/semantic/Gemfile +0 -20
  1597. data/lib/puppet/vendor/semantic/PUPPET_README.md +0 -6
  1598. data/lib/puppet/vendor/semantic/Rakefile +0 -69
  1599. data/lib/puppet/vendor/semantic/spec/spec_helper.rb +0 -24
  1600. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_node_spec.rb +0 -141
  1601. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_spec.rb +0 -162
  1602. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/module_release_spec.rb +0 -143
  1603. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/source_spec.rb +0 -5
  1604. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/unsatisfiable_graph_spec.rb +0 -44
  1605. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency_spec.rb +0 -383
  1606. data/lib/puppet/vendor/semantic/spec/unit/semantic/version_range_spec.rb +0 -307
  1607. data/lib/puppet/vendor/semantic/spec/unit/semantic/version_spec.rb +0 -608
  1608. data/spec/fixtures/unit/data_providers/environments/sample/manifests/site.pp +0 -6
  1609. data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/manifests/init.pp +0 -3
  1610. data/spec/integration/data_binding.rb +0 -104
  1611. data/spec/integration/parser/functions/require_spec.rb +0 -43
  1612. data/spec/integration/provider/package_spec.rb +0 -33
  1613. data/spec/unit/parser/functions/defined_spec.rb +0 -120
  1614. data/spec/unit/parser/functions/include_spec.rb +0 -55
  1615. data/spec/unit/parser/functions/require_spec.rb +0 -68
  1616. data/spec/unit/resource/type_collection_helper_spec.rb +0 -24
  1617. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/environment.conf +0 -0
  1618. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/lib/puppet/functions/environment/data.rb +0 -0
  1619. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -0
  1620. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -0
  1621. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/manifests/init.pp +0 -0
  1622. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/bindings/bad_data/default.rb +0 -0
  1623. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/bindings/bca/default.rb +0 -0
  1624. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/functions/bca/data.rb +0 -0
  1625. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/manifests/init.pp +0 -0
  1626. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/no_provider/manifests/init.pp +0 -0
  1627. /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{usee → modules/usee}/lib/puppet/functions/usee/callee.rb +0 -0
  1628. /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/lib/puppet/functions/user/caller.rb +0 -0
@@ -1,14 +1,40 @@
1
- class Puppet::Pops::Loaders
1
+ module Puppet::Pops
2
+ # This is the container for all Loader instances. Each Loader instance has a `loader_name` by which it can be uniquely
3
+ # identified within this container.
4
+ # A Loader can be private or public. In general, code will have access to the private loader associated with the
5
+ # location of the code. It will be parented by a loader that in turn have access to other public loaders that
6
+ # can load only such entries that have been publicly available. The split between public and private is not
7
+ # yet enforced in Puppet.
8
+ #
9
+ # The name of a private loader should always end with ' private'
10
+ #
11
+ class Loaders
2
12
  class LoaderError < Puppet::Error; end
3
13
 
4
14
  attr_reader :static_loader
5
15
  attr_reader :puppet_system_loader
6
16
  attr_reader :public_environment_loader
7
17
  attr_reader :private_environment_loader
18
+ attr_reader :implementation_registry
19
+ attr_reader :environment
20
+
21
+ def self.new(environment, for_agent = false)
22
+ obj = environment.loaders
23
+ if obj.nil?
24
+ obj = self.allocate
25
+ obj.send(:initialize, environment, for_agent)
26
+ end
27
+ obj
28
+ end
8
29
 
9
- def initialize(environment)
10
- # The static loader can only be changed after a reboot
11
- @@static_loader ||= Puppet::Pops::Loader::StaticLoader.new()
30
+ def initialize(environment, for_agent)
31
+ # Protect against environment havoc
32
+ raise ArgumentError.new("Attempt to redefine already initialized loaders for environment") unless environment.loaders.nil?
33
+ environment.loaders = self
34
+ @environment = environment
35
+ @loaders_by_name = {}
36
+
37
+ add_loader_by_name(self.class.static_loader)
12
38
 
13
39
  # Create the set of loaders
14
40
  # 1. Puppet, loads from the "running" puppet - i.e. bundled functions, types, extension points and extensions
@@ -23,26 +49,157 @@ class Puppet::Pops::Loaders
23
49
  # concept of environment the same way as when running as a master (except when doing apply).
24
50
  # The creation mechanisms should probably differ between the two.
25
51
  #
26
- @private_environment_loader = create_environment_loader(environment)
52
+ @private_environment_loader = if for_agent
53
+ add_loader_by_name(Loader::SimpleEnvironmentLoader.new(@puppet_system_loader, 'agent environment'))
54
+ else
55
+ create_environment_loader(environment)
56
+ end
27
57
 
28
- # 3. module loaders are set up from the create_environment_loader, they register themselves
58
+ # 3. The implementation registry maintains mappings between Puppet types and Runtime types for
59
+ # the current environment
60
+ @implementation_registry = Types::ImplementationRegistry.new(@private_environment_loader)
61
+ Pcore.init(@puppet_system_loader, @implementation_registry, for_agent)
62
+
63
+ # 4. module loaders are set up from the create_environment_loader, they register themselves
29
64
  end
30
65
 
31
66
  # Clears the cached static and puppet_system loaders (to enable testing)
32
67
  #
33
68
  def self.clear
34
69
  @@static_loader = nil
35
- @puppet_system_loader = nil
70
+ end
71
+
72
+ # Calls {#loaders} to obtain the {{Loaders}} instance and then uses it to find the appropriate loader
73
+ # for the given `module_name`, or for the environment in case `module_name` is `nil` or empty.
74
+ #
75
+ # @param module_name [String,nil] the name of the module
76
+ # @return [Loader::Loader] the found loader
77
+ # @raise [Puppet::ParseError] if no loader can be found
78
+ # @api private
79
+ def self.find_loader(module_name)
80
+ loaders.find_loader(module_name)
81
+ end
82
+
83
+ def self.static_loader
84
+ # The static loader can only be changed after a reboot
85
+ @@static_loader ||= Loader::StaticLoader.new()
86
+ end
87
+
88
+ def self.implementation_registry
89
+ loaders = Puppet.lookup(:loaders) { nil }
90
+ loaders.nil? ? nil : loaders.implementation_registry
91
+ end
92
+
93
+ def register_implementations(obj_classes, name_authority)
94
+ loader = @private_environment_loader
95
+ types = obj_classes.map do |obj_class|
96
+ type = obj_class._ptype
97
+ typed_name = Loader::TypedName.new(:type, type.name.downcase, name_authority)
98
+ entry = loader.loaded_entry(typed_name)
99
+ loader.set_entry(typed_name, type, obj_class._plocation) if entry.nil? || entry.value.nil?
100
+ type
101
+ end
102
+ # Resolve lazy so that all types can cross reference each other
103
+ parser = Types::TypeParser.singleton
104
+ types.each { |type| type.resolve(parser, loader) }
105
+ end
106
+
107
+ # Register the given type with the Runtime3TypeLoader. The registration will not happen unless
108
+ # the type system has been initialized.
109
+ #
110
+ # @param name [String,Symbol] the name of the entity being set
111
+ # @param origin [URI] the origin or the source where the type is defined
112
+ # @api private
113
+ def self.register_runtime3_type(name, origin)
114
+ loaders = Puppet.lookup(:loaders) { nil }
115
+ return nil if loaders.nil?
116
+
117
+ rt3_loader = loaders.runtime3_type_loader
118
+ return nil if rt3_loader.nil?
119
+
120
+ name = name.to_s
121
+ caps_name = Types::TypeFormatter.singleton.capitalize_segments(name)
122
+ typed_name = Loader::TypedName.new(:type, name.downcase)
123
+ rt3_loader.set_entry(typed_name, Types::PResourceType.new(caps_name), origin)
124
+ nil
125
+ end
126
+
127
+ # Finds a loader to use when deserializing a catalog and then subsequenlty use user
128
+ # defined types found in that catalog.
129
+ #
130
+ def self.catalog_loader
131
+ loaders = Puppet.lookup(:loaders) { nil }
132
+ if loaders.nil?
133
+ loaders = Loaders.new(Puppet.lookup(:current_environment), true)
134
+ Puppet.push_context(:loaders => loaders)
135
+ end
136
+ loaders.find_loader(nil)
137
+ end
138
+
139
+ # Finds the `Loaders` instance by looking up the :loaders in the global Puppet context
140
+ #
141
+ # @return [Loaders] the loaders instance
142
+ # @raise [Puppet::ParseError] if loader has been bound to the global context
143
+ # @api private
144
+ def self.loaders
145
+ loaders = Puppet.lookup(:loaders) { nil }
146
+ raise Puppet::ParseError, "Internal Error: Puppet Context ':loaders' missing" if loaders.nil?
147
+ loaders
148
+ end
149
+
150
+ # Lookup a loader by its unique name.
151
+ #
152
+ # @param [String] loader_name the name of the loader to lookup
153
+ # @return [Loader] the found loader
154
+ # @raise [Puppet::ParserError] if no loader is found
155
+ def [](loader_name)
156
+ loader = @loaders_by_name[loader_name]
157
+ if loader.nil?
158
+ # Unable to find the module private loader. Try resolving the module
159
+ loader = private_loader_for_module(loader_name[0..-9]) if loader_name.end_with?(' private')
160
+ raise Puppet::ParseError, "Unable to find loader named '#{loader_name}'" if loader.nil?
161
+ end
162
+ loader
163
+ end
164
+
165
+ # Finds the appropriate loader for the given `module_name`, or for the environment in case `module_name`
166
+ # is `nil` or empty.
167
+ #
168
+ # @param module_name [String,nil] the name of the module
169
+ # @return [Loader::Loader] the found loader
170
+ # @raise [Puppet::ParseError] if no loader can be found
171
+ # @api private
172
+ def find_loader(module_name)
173
+ if module_name.nil? || module_name == ''
174
+ # TODO : Later when fdefinition can be private, a decision is needed regarding what that means.
175
+ # A private environment loader could be used for logic outside of modules, then only that logic
176
+ # would see the definition.
177
+ #
178
+ # Use the private loader, this definition may see the environment's dependencies (currently, all modules)
179
+ loader = private_environment_loader()
180
+ raise Puppet::ParseError, 'Internal Error: did not find public loader' if loader.nil?
181
+ loader
182
+ else
183
+ # TODO : Later check if definition is private, and then add it to private_loader_for_module
184
+ #
185
+ loader = public_loader_for_module(module_name)
186
+ raise Puppet::ParseError, "Internal Error: did not find public loader for module: '#{module_name}'" if loader.nil?
187
+ loader
188
+ end
36
189
  end
37
190
 
38
191
  def static_loader
39
- @@static_loader
192
+ self.class.static_loader
40
193
  end
41
194
 
42
195
  def puppet_system_loader
43
196
  @puppet_system_loader
44
197
  end
45
198
 
199
+ def runtime3_type_loader
200
+ @runtime3_type_loader
201
+ end
202
+
46
203
  def public_loader_for_module(module_name)
47
204
  md = @module_resolver[module_name] || (return nil)
48
205
  # Note, this loader is not resolved until there is interest in the visibility of entities from the
@@ -63,10 +220,16 @@ class Puppet::Pops::Loaders
63
220
  md.private_loader
64
221
  end
65
222
 
223
+ def add_loader_by_name(loader)
224
+ name = loader.loader_name
225
+ raise Puppet::ParseError, "Internal Error: Attempt to redefine loader named '#{name}'" if @loaders_by_name.include?(name)
226
+ @loaders_by_name[name] = loader
227
+ end
228
+
66
229
  private
67
230
 
68
231
  def create_puppet_system_loader()
69
- Puppet::Pops::Loader::ModuleLoaders.system_loader_from(static_loader, self)
232
+ Loader::ModuleLoaders.system_loader_from(static_loader, self)
70
233
  end
71
234
 
72
235
  def create_environment_loader(environment)
@@ -86,15 +249,20 @@ class Puppet::Pops::Loaders
86
249
  # Puppet binder currently reads confdir/bindings - that is bad, it should be using the new environment support.
87
250
 
88
251
  # The environment is not a namespace, so give it a nil "module_name"
89
- module_name = nil
90
252
  loader_name = "environment:#{environment.name}"
253
+ # env_conf is setup from the environment_dir value passed into Puppet::Environments::Directories.new
91
254
  env_conf = Puppet.lookup(:environments).get_conf(environment.name)
92
- if env_conf.nil? || !env_conf.is_a?(Puppet::Settings::EnvironmentConf)
255
+ env_path = env_conf.nil? || !env_conf.is_a?(Puppet::Settings::EnvironmentConf) ? nil : env_conf.path_to_env
256
+
257
+ # Create the 3.x resource type loader
258
+ @runtime3_type_loader = add_loader_by_name(Loader::Runtime3TypeLoader.new(puppet_system_loader, self, environment, env_conf.nil? ? nil : env_path))
259
+
260
+ if env_path.nil?
93
261
  # Not a real directory environment, cannot work as a module TODO: Drop when legacy env are dropped?
94
- loader = Puppet::Pops::Loader::SimpleEnvironmentLoader.new(puppet_system_loader, loader_name)
262
+ loader = add_loader_by_name(Loader::SimpleEnvironmentLoader.new(@runtime3_type_loader, loader_name))
95
263
  else
96
264
  # View the environment as a module to allow loading from it - this module is always called 'environment'
97
- loader = Puppet::Pops::Loader::ModuleLoaders.module_loader_from(puppet_system_loader, self, 'environment', env_conf.path_to_env)
265
+ loader = Loader::ModuleLoaders.environment_loader_from(@runtime3_type_loader, self, env_path)
98
266
  end
99
267
 
100
268
  # An environment has a module path even if it has a null loader
@@ -105,7 +273,7 @@ class Puppet::Pops::Loaders
105
273
  # Code in the environment gets to see all modules (since there is no metadata for the environment)
106
274
  # but since this is not given to the module loaders, they can not load global code (since they can not
107
275
  # have prior knowledge about this
108
- loader = Puppet::Pops::Loader::DependencyLoader.new(loader, "environment", @module_resolver.all_module_loaders())
276
+ loader = add_loader_by_name(Loader::DependencyLoader.new(loader, 'environment private', @module_resolver.all_module_loaders()))
109
277
 
110
278
  # The module loader gets the private loader via a lazy operation to look up the module's private loader.
111
279
  # This does not work for an environment since it is not resolved the same way.
@@ -116,12 +284,12 @@ class Puppet::Pops::Loaders
116
284
  end
117
285
 
118
286
  def configure_loaders_for_modules(parent_loader, environment)
119
- @module_resolver = mr = ModuleResolver.new()
287
+ @module_resolver = mr = ModuleResolver.new(self)
120
288
  environment.modules.each do |puppet_module|
121
289
  # Create data about this module
122
290
  md = LoaderModuleData.new(puppet_module)
123
291
  mr[puppet_module.name] = md
124
- md.public_loader = Puppet::Pops::Loader::ModuleLoaders.module_loader_from(parent_loader, self, md.name, md.path)
292
+ md.public_loader = Loader::ModuleLoaders.module_loader_from(parent_loader, self, md.name, md.path)
125
293
  end
126
294
  # NOTE: Do not resolve all modules here - this is wasteful if only a subset of modules / functions are used
127
295
  # The resolution is triggered by asking for a module's private loader, since this means there is interest
@@ -138,7 +306,6 @@ class Puppet::Pops::Loaders
138
306
  #
139
307
  class LoaderModuleData
140
308
 
141
- attr_accessor :state
142
309
  attr_accessor :public_loader
143
310
  attr_accessor :private_loader
144
311
  attr_accessor :resolutions
@@ -149,7 +316,6 @@ class Puppet::Pops::Loaders
149
316
  # @param puppet_module [Puppet::Module] the module instance for the module being represented
150
317
  #
151
318
  def initialize(puppet_module)
152
- @state = :initial
153
319
  @puppet_module = puppet_module
154
320
  @resolutions = []
155
321
  @public_loader = nil
@@ -169,7 +335,7 @@ class Puppet::Pops::Loaders
169
335
  end
170
336
 
171
337
  def resolved?
172
- @state == :resolved
338
+ !@private_loader.nil?
173
339
  end
174
340
 
175
341
  def restrict_to_dependencies?
@@ -189,7 +355,8 @@ class Puppet::Pops::Loaders
189
355
  #
190
356
  class ModuleResolver
191
357
 
192
- def initialize()
358
+ def initialize(loaders)
359
+ @loaders = loaders
193
360
  @index = {}
194
361
  @all_module_loaders = nil
195
362
  end
@@ -208,7 +375,7 @@ class Puppet::Pops::Loaders
208
375
 
209
376
  def resolve(module_data)
210
377
  if module_data.resolved?
211
- return
378
+ nil
212
379
  else
213
380
  module_data.private_loader =
214
381
  if module_data.restrict_to_dependencies?
@@ -224,17 +391,28 @@ class Puppet::Pops::Loaders
224
391
  def create_loader_with_all_modules_visible(from_module_data)
225
392
  Puppet.debug{"ModuleLoader: module '#{from_module_data.name}' has unknown dependencies - it will have all other modules visible"}
226
393
 
227
- Puppet::Pops::Loader::DependencyLoader.new(from_module_data.public_loader, from_module_data.name, all_module_loaders())
394
+ @loaders.add_loader_by_name(Loader::DependencyLoader.new(from_module_data.public_loader, "#{from_module_data.name} private", all_module_loaders()))
228
395
  end
229
396
 
230
397
  def create_loader_with_only_dependencies_visible(from_module_data)
231
398
  if from_module_data.unmet_dependencies?
232
- Puppet.warning("ModuleLoader: module '#{from_module_data.name}' has unresolved dependencies"+
233
- " - it will only see those that are resolved."+
234
- " Use 'puppet module list --tree' to see information about modules")
399
+ if Puppet[:strict] != :off
400
+ msg = "ModuleLoader: module '#{from_module_data.name}' has unresolved dependencies" \
401
+ " - it will only see those that are resolved." \
402
+ " Use 'puppet module list --tree' to see information about modules"
403
+ case Puppet[:strict]
404
+ when :error
405
+ raise LoaderError.new(msg)
406
+ when :warning
407
+ Puppet.warn_once(:unresolved_module_dependencies,
408
+ "unresolved_dependencies_for_module_#{from_module_data.name}",
409
+ msg)
410
+ end
411
+ end
235
412
  end
236
413
  dependency_loaders = from_module_data.dependency_names.collect { |name| @index[name].public_loader }
237
- Puppet::Pops::Loader::DependencyLoader.new(from_module_data.public_loader, from_module_data.name, dependency_loaders)
414
+ @loaders.add_loader_by_name(Loader::DependencyLoader.new(from_module_data.public_loader, "#{from_module_data.name} private", dependency_loaders))
238
415
  end
239
416
  end
240
417
  end
418
+ end
@@ -0,0 +1,93 @@
1
+ require_relative 'hiera_config'
2
+ require_relative 'data_provider'
3
+
4
+ module Puppet::Pops
5
+ module Lookup
6
+ # @api private
7
+ class ConfiguredDataProvider
8
+ include DataProvider
9
+
10
+ # @param config [HieraConfig,nil] the configuration
11
+ def initialize(config = nil)
12
+ @config = config.nil? ? nil : assert_config_version(config)
13
+ end
14
+
15
+ def config(lookup_invocation)
16
+ @config ||= assert_config_version(HieraConfig.create(lookup_invocation, configuration_path(lookup_invocation), self))
17
+ end
18
+
19
+ # Needed to assign generated version 4 config
20
+ # @deprecated
21
+ def config=(config)
22
+ @config = config
23
+ end
24
+
25
+ # @return [Pathname] the path to the configuration
26
+ def config_path
27
+ @config.nil? ? nil : @config.config_path
28
+ end
29
+
30
+ # @return [String] the name of this provider
31
+ def name
32
+ n = "#{place} "
33
+ n << '"' << module_name << '" ' unless module_name.nil?
34
+ n << 'Data Provider'
35
+ n << " (#{@config.name})" unless @config.nil?
36
+ n
37
+ end
38
+
39
+ # Performs a lookup by searching all configured locations for the given _key_. A merge will be performed if
40
+ # the value is found in more than one location.
41
+ #
42
+ # @param key [String] The key to lookup
43
+ # @param lookup_invocation [Invocation] The current lookup invocation
44
+ # @param merge [MergeStrategy,String,Hash{String => Object},nil] Merge strategy, merge strategy name, strategy and options hash, or nil (implies "first found")
45
+ # @return [Object] the found object
46
+ # @throw :no_such_key when the object is not found
47
+ def unchecked_key_lookup(key, lookup_invocation, merge)
48
+ lookup_invocation.with(:data_provider, self) do
49
+ merge_strategy = MergeStrategy.strategy(merge)
50
+ dps = data_providers(lookup_invocation)
51
+ if dps.empty?
52
+ lookup_invocation.report_not_found(key)
53
+ throw :no_such_key
54
+ end
55
+ merge_strategy.lookup(dps, lookup_invocation) do |data_provider|
56
+ data_provider.unchecked_key_lookup(key, lookup_invocation, merge_strategy)
57
+ end
58
+ end
59
+ end
60
+
61
+ protected
62
+
63
+ # Assert that the given config version is accepted by this data provider.
64
+ #
65
+ # @param config [HieraConfig] the configuration to check
66
+ # @return [HieraConfig] the argument
67
+ # @raise [Puppet::DataBinding::LookupError] if the configuration version is unacceptable
68
+ def assert_config_version(config)
69
+ config
70
+ end
71
+
72
+ # Return the root of the configured entity
73
+ #
74
+ # @param lookup_invocation [Invocation] The current lookup invocation
75
+ # @return [Pathname] Path to root of the module
76
+ # @raise [Puppet::DataBinding::LookupError] if the given module is can not be found
77
+ #
78
+ def provider_root(lookup_invocation)
79
+ raise NotImplementedError, "#{self.class.name} must implement method '#provider_root'"
80
+ end
81
+
82
+ def configuration_path(lookup_invocation)
83
+ provider_root(lookup_invocation) + HieraConfig::CONFIG_FILE_NAME
84
+ end
85
+
86
+ private
87
+
88
+ def data_providers(lookup_invocation)
89
+ config(lookup_invocation).configured_data_providers(lookup_invocation, self)
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,200 @@
1
+ require_relative 'interpolation'
2
+
3
+ module Puppet::Pops
4
+ module Lookup
5
+ # The EnvironmentContext is adapted to the current environment
6
+ #
7
+ class EnvironmentContext < Adaptable::Adapter
8
+ class FileData
9
+ attr_reader :data
10
+
11
+ def initialize(path, inode, mtime, size, data)
12
+ @path = path
13
+ @inode = inode
14
+ @mtime = mtime
15
+ @size = size
16
+ @data = data
17
+ end
18
+
19
+ def valid?(stat)
20
+ stat.ino == @inode && stat.mtime == @mtime && stat.size == @size
21
+ end
22
+ end
23
+
24
+ attr_reader :environment_name
25
+
26
+ def self.create_adapter(environment)
27
+ new(environment)
28
+ end
29
+
30
+ def initialize(environment)
31
+ @environment_name = environment.name
32
+ @file_data_cache = {}
33
+ end
34
+
35
+ # Loads the contents of the file given by _path_. The content is then yielded to the provided block in
36
+ # case a block is given, and the returned value from that block is cached and returned by this method.
37
+ # If no block is given, the content is stored instead.
38
+ #
39
+ # The cache is retained as long as the inode, mtime, and size of the file remains unchanged.
40
+ #
41
+ # @param path [String] path to the file to be read
42
+ # @yieldparam content [String] the content that was read from the file
43
+ # @yieldreturn [Object] some result based on the content
44
+ # @return [Object] the content, or if a block was given, the return value of the block
45
+ #
46
+ def cached_file_data(path)
47
+ file_data = @file_data_cache[path]
48
+ stat = Puppet::FileSystem.stat(path)
49
+ unless file_data && file_data.valid?(stat)
50
+ Puppet.debug("File at '#{path}' was changed, reloading") if file_data
51
+ content = Puppet::FileSystem.read(path, :encoding => 'utf-8')
52
+ file_data = FileData.new(path, stat.ino, stat.mtime, stat.size, block_given? ? yield(content) : content)
53
+ @file_data_cache[path] = file_data
54
+ end
55
+ file_data.data
56
+ end
57
+ end
58
+
59
+ # A FunctionContext is created for each unique hierarchy entry and adapted to the Compiler (and hence shares
60
+ # the compiler's life-cycle).
61
+ # @api private
62
+ class FunctionContext
63
+ include Interpolation
64
+
65
+ attr_reader :module_name, :function
66
+ attr_accessor :data_hash
67
+
68
+ def initialize(environment_context, module_name, function)
69
+ @data_hash = nil
70
+ @cache = {}
71
+ @environment_context = environment_context
72
+ @module_name = module_name
73
+ @function = function
74
+ end
75
+
76
+ def cache(key, value)
77
+ @cache[key] = value
78
+ end
79
+
80
+ def cache_all(hash)
81
+ @cache.merge!(hash)
82
+ nil
83
+ end
84
+
85
+ def cache_has_key(key)
86
+ @cache.include?(key)
87
+ end
88
+
89
+ def cached_value(key)
90
+ @cache[key]
91
+ end
92
+
93
+ def cached_entries(&block)
94
+ if block_given?
95
+ enumerator = @cache.each_pair
96
+ @cache.size.times do
97
+ if block.arity == 2
98
+ yield(*enumerator.next)
99
+ else
100
+ yield(enumerator.next)
101
+ end
102
+ end
103
+ nil
104
+ else
105
+ Types::Iterable.on(@cache)
106
+ end
107
+ end
108
+
109
+ def cached_file_data(path, &block)
110
+ @environment_context.cached_file_data(path, &block)
111
+ end
112
+
113
+ def environment_name
114
+ @environment_context.environment_name
115
+ end
116
+ end
117
+
118
+ # The Context is created once for each call to a function. It provides a combination of the {Invocation} object needed
119
+ # to provide explanation support and the {FunctionContext} object needed to provide the private cache.
120
+ # The {Context} is part of the public API. It will be passed to a _data_hash_, _data_dig_, or _lookup_key_ function and its
121
+ # attributes and methods can be used in a Puppet function as well as in a Ruby function.
122
+ # The {Context} is maps to the Pcore type 'Puppet::LookupContext'
123
+ #
124
+ # @api public
125
+ class Context
126
+ include Types::PuppetObject
127
+ extend Forwardable
128
+
129
+ def self._ptype
130
+ @type
131
+ end
132
+
133
+ def self.register_ptype(loader, ir)
134
+ tf = Types::TypeFactory
135
+ key_type = tf.optional(tf.scalar)
136
+ @type = Pcore::create_object_type(loader, ir, self, 'Puppet::LookupContext', 'Any',
137
+ {
138
+ 'environment_name' => {
139
+ Types::KEY_TYPE => Types::PStringType::NON_EMPTY,
140
+ Types::KEY_KIND => Types::PObjectType::ATTRIBUTE_KIND_DERIVED
141
+ },
142
+ 'module_name' => {
143
+ Types::KEY_TYPE => tf.variant(Types::PStringType::NON_EMPTY, Types::PUndefType::DEFAULT)
144
+ }
145
+ },
146
+ {
147
+ 'not_found' => tf.callable([0, 0], tf.undef),
148
+ 'explain' => tf.callable([0, 0, tf.callable(0,0)], tf.undef),
149
+ 'interpolate' => tf.callable(1, 1),
150
+ 'cache' => tf.callable([key_type, tf.any], tf.any),
151
+ 'cache_all' => tf.callable([tf.hash_kv(key_type, tf.any)], tf.undef),
152
+ 'cache_has_key' => tf.callable([key_type], tf.boolean),
153
+ 'cached_value' => tf.callable([key_type], tf.any),
154
+ 'cached_entries' => tf.variant(
155
+ tf.callable([0, 0, tf.callable(1,1)], tf.undef),
156
+ tf.callable([0, 0, tf.callable(2,2)], tf.undef),
157
+ tf.callable([0, 0], tf.iterable(tf.tuple([key_type, tf.any])))),
158
+ 'cached_file_data' => tf.callable(tf.string, tf.optional(tf.callable([1, 1])))
159
+ }
160
+ ).resolve(Types::TypeParser.singleton, loader)
161
+ end
162
+
163
+ # Mainly for test purposes. Makes it possible to create a {Context} in Puppet code provided that a current {Invocation} exists.
164
+ def self.from_asserted_args(module_name)
165
+ new(FunctionContext.new(EnvironmentContext.adapt(Puppet.lookup(:environments).get(Puppet[:environment])), module_name, nil), Invocation.current)
166
+ end
167
+
168
+ # Public methods delegated to the {FunctionContext}
169
+ def_delegators :@function_context, :cache, :cache_all, :cache_has_key, :cached_value, :cached_entries, :environment_name, :module_name, :cached_file_data
170
+
171
+ def initialize(function_context, lookup_invocation)
172
+ @lookup_invocation = lookup_invocation
173
+ @function_context = function_context
174
+ end
175
+
176
+ # Will call the given block to obtain a textual explanation if explanation support is active.
177
+ #
178
+ def explain(&block)
179
+ @lookup_invocation.report_text(&block)
180
+ nil
181
+ end
182
+
183
+ # Resolve interpolation expressions in the given value
184
+ # @param [Object] value
185
+ # @return [Object] the value with all interpolation expressions resolved
186
+ def interpolate(value)
187
+ @function_context.interpolate(value, @lookup_invocation, true)
188
+ end
189
+
190
+ def not_found
191
+ throw :no_such_key
192
+ end
193
+
194
+ # @api private
195
+ def invocation
196
+ @lookup_invocation
197
+ end
198
+ end
199
+ end
200
+ end
@@ -0,0 +1,27 @@
1
+ module Puppet::Pops
2
+ module Lookup
3
+ # A class that adapts a Hash
4
+ # @api private
5
+ class DataAdapter < Adaptable::Adapter
6
+ def self.create_adapter(o)
7
+ new
8
+ end
9
+
10
+ def initialize
11
+ @data = {}
12
+ end
13
+
14
+ def [](name)
15
+ @data[name]
16
+ end
17
+
18
+ def include?(name)
19
+ @data.include? name
20
+ end
21
+
22
+ def []=(name, value)
23
+ @data[name] = value
24
+ end
25
+ end
26
+ end
27
+ end