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