puppet 4.2.0 → 4.3.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 (422) hide show
  1. data/CONTRIBUTING.md +1 -1
  2. data/Gemfile +5 -7
  3. data/README.md +1 -1
  4. data/Rakefile +20 -0
  5. data/ext/debian/puppet.init +0 -1
  6. data/ext/debian/puppet.logrotate +14 -5
  7. data/ext/osx/puppet.plist +2 -4
  8. data/ext/project_data.yaml +1 -1
  9. data/ext/redhat/client.init +65 -12
  10. data/ext/redhat/logrotate +15 -3
  11. data/ext/redhat/puppet.spec.erb +5 -1
  12. data/ext/redhat/server.init +1 -1
  13. data/ext/solaris/smf/puppet +44 -0
  14. data/ext/solaris/smf/puppet.xml +44 -0
  15. data/ext/suse/client.init +27 -27
  16. data/ext/suse/server.init +2 -2
  17. data/ext/systemd/puppet.service +1 -0
  18. data/install.rb +21 -39
  19. data/lib/hiera/puppet_function.rb +5 -5
  20. data/lib/puppet/agent/locker.rb +11 -2
  21. data/lib/puppet/agent.rb +4 -4
  22. data/lib/puppet/application/agent.rb +28 -14
  23. data/lib/puppet/application/apply.rb +17 -4
  24. data/lib/puppet/application/cert.rb +16 -0
  25. data/lib/puppet/application/filebucket.rb +78 -4
  26. data/lib/puppet/application/lookup.rb +356 -0
  27. data/lib/puppet/application/master.rb +5 -1
  28. data/lib/puppet/configurer.rb +9 -5
  29. data/lib/puppet/context/trusted_information.rb +21 -1
  30. data/lib/puppet/context.rb +16 -1
  31. data/lib/puppet/daemon.rb +17 -13
  32. data/lib/puppet/data_binding.rb +4 -2
  33. data/lib/puppet/data_providers/data_adapter.rb +7 -68
  34. data/lib/puppet/data_providers/data_function_support.rb +5 -26
  35. data/lib/puppet/data_providers/function_env_data_provider.rb +0 -10
  36. data/lib/puppet/data_providers/function_module_data_provider.rb +0 -22
  37. data/lib/puppet/data_providers/hiera_config.rb +106 -0
  38. data/lib/puppet/data_providers/hiera_env_data_provider.rb +18 -0
  39. data/lib/puppet/data_providers/hiera_interpolate.rb +97 -0
  40. data/lib/puppet/data_providers/hiera_module_data_provider.rb +23 -0
  41. data/lib/puppet/data_providers/hiera_support.rb +37 -0
  42. data/lib/puppet/data_providers/json_data_provider_factory.rb +31 -0
  43. data/lib/puppet/data_providers/lookup_adapter.rb +200 -0
  44. data/lib/puppet/data_providers/yaml_data_provider_factory.rb +32 -0
  45. data/lib/puppet/data_providers.rb +12 -13
  46. data/lib/puppet/defaults.rb +14 -3
  47. data/lib/puppet/environments.rb +94 -6
  48. data/lib/puppet/error.rb +4 -0
  49. data/lib/puppet/face/module/changes.rb +2 -1
  50. data/lib/puppet/feature/cfacter.rb +1 -0
  51. data/lib/puppet/file_bucket/dipper.rb +58 -2
  52. data/lib/puppet/file_system/windows.rb +3 -1
  53. data/lib/puppet/functions/assert_type.rb +48 -12
  54. data/lib/puppet/functions/defined.rb +79 -48
  55. data/lib/puppet/functions/each.rb +85 -27
  56. data/lib/puppet/functions/epp.rb +29 -37
  57. data/lib/puppet/functions/filter.rb +60 -25
  58. data/lib/puppet/functions/hiera.rb +76 -3
  59. data/lib/puppet/functions/hiera_array.rb +65 -3
  60. data/lib/puppet/functions/hiera_hash.rb +74 -2
  61. data/lib/puppet/functions/hiera_include.rb +77 -4
  62. data/lib/puppet/functions/inline_epp.rb +44 -71
  63. data/lib/puppet/functions/lookup.rb +19 -17
  64. data/lib/puppet/functions/map.rb +56 -21
  65. data/lib/puppet/functions/match.rb +29 -12
  66. data/lib/puppet/functions/reduce.rb +95 -58
  67. data/lib/puppet/functions/versioncmp.rb +36 -0
  68. data/lib/puppet/functions/with.rb +15 -7
  69. data/lib/puppet/functions.rb +2 -4
  70. data/lib/puppet/indirector/catalog/compiler.rb +3 -3
  71. data/lib/puppet/indirector/catalog/static_compiler.rb +46 -30
  72. data/lib/puppet/indirector/data_binding/none.rb +4 -1
  73. data/lib/puppet/indirector/file_bucket_file/file.rb +58 -1
  74. data/lib/puppet/indirector/hiera.rb +4 -0
  75. data/lib/puppet/indirector/indirection.rb +6 -1
  76. data/lib/puppet/indirector/json.rb +1 -1
  77. data/lib/puppet/indirector/msgpack.rb +1 -1
  78. data/lib/puppet/indirector/request.rb +7 -8
  79. data/lib/puppet/indirector/resource_type/parser.rb +5 -3
  80. data/lib/puppet/info_service/class_information_service.rb +111 -0
  81. data/lib/puppet/info_service.rb +7 -0
  82. data/lib/puppet/module_tool/applications/unpacker.rb +1 -1
  83. data/lib/puppet/module_tool/metadata.rb +32 -9
  84. data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +42 -38
  85. data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +25 -18
  86. data/lib/puppet/network/authconfig.rb +21 -1
  87. data/lib/puppet/network/authorization.rb +8 -1
  88. data/lib/puppet/network/http/api/master/v3/environment.rb +59 -0
  89. data/lib/puppet/network/http/api/master/v3.rb +7 -1
  90. data/lib/puppet/node/environment.rb +9 -2
  91. data/lib/puppet/node.rb +11 -5
  92. data/lib/puppet/parser/ast/pops_bridge.rb +39 -1
  93. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +64 -0
  94. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +38 -0
  95. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +20 -0
  96. data/lib/puppet/parser/compiler/catalog_validator.rb +33 -0
  97. data/lib/puppet/parser/compiler.rb +300 -12
  98. data/lib/puppet/parser/environment_compiler.rb +165 -0
  99. data/lib/puppet/parser/functions/assert_type.rb +46 -16
  100. data/lib/puppet/parser/functions/defined.rb +105 -68
  101. data/lib/puppet/parser/functions/each.rb +85 -27
  102. data/lib/puppet/parser/functions/epp.rb +29 -37
  103. data/lib/puppet/parser/functions/filter.rb +59 -23
  104. data/lib/puppet/parser/functions/hiera.rb +83 -27
  105. data/lib/puppet/parser/functions/hiera_array.rb +71 -28
  106. data/lib/puppet/parser/functions/hiera_hash.rb +81 -30
  107. data/lib/puppet/parser/functions/hiera_include.rb +81 -40
  108. data/lib/puppet/parser/functions/inline_epp.rb +35 -60
  109. data/lib/puppet/parser/functions/inline_template.rb +2 -2
  110. data/lib/puppet/parser/functions/map.rb +55 -20
  111. data/lib/puppet/parser/functions/match.rb +27 -12
  112. data/lib/puppet/parser/functions/reduce.rb +97 -60
  113. data/lib/puppet/parser/functions/with.rb +16 -8
  114. data/lib/puppet/parser/resource.rb +103 -21
  115. data/lib/puppet/parser.rb +3 -0
  116. data/lib/puppet/plugins/configuration.rb +3 -2
  117. data/lib/puppet/plugins/data_providers/data_provider.rb +283 -0
  118. data/lib/puppet/plugins/data_providers/registry.rb +84 -0
  119. data/lib/puppet/plugins/data_providers.rb +12 -60
  120. data/lib/puppet/pops/adapters.rb +12 -0
  121. data/lib/puppet/pops/binder/binder.rb +2 -2
  122. data/lib/puppet/pops/binder/bindings_checker.rb +1 -1
  123. data/lib/puppet/pops/binder/bindings_label_provider.rb +3 -1
  124. data/lib/puppet/pops/binder/bindings_loader.rb +6 -2
  125. data/lib/puppet/pops/binder/bindings_model_meta.rb +2 -2
  126. data/lib/puppet/pops/binder/config/binder_config.rb +1 -1
  127. data/lib/puppet/pops/binder/injector.rb +4 -4
  128. data/lib/puppet/pops/binder/key_factory.rb +3 -9
  129. data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +68 -9
  130. data/lib/puppet/pops/evaluator/access_operator.rb +27 -60
  131. data/lib/puppet/pops/evaluator/closure.rb +8 -8
  132. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -1
  133. data/lib/puppet/pops/evaluator/evaluator_impl.rb +10 -6
  134. data/lib/puppet/pops/evaluator/literal_evaluator.rb +87 -0
  135. data/lib/puppet/pops/evaluator/relationship_operator.rb +7 -1
  136. data/lib/puppet/pops/functions/dispatcher.rb +3 -3
  137. data/lib/puppet/pops/issues.rb +11 -3
  138. data/lib/puppet/pops/label_provider.rb +1 -1
  139. data/lib/puppet/pops/lookup/explainer.rb +402 -0
  140. data/lib/puppet/pops/lookup/invocation.rb +117 -0
  141. data/lib/puppet/pops/lookup.rb +25 -47
  142. data/lib/puppet/pops/merge_strategy.rb +73 -5
  143. data/lib/puppet/pops/model/factory.rb +38 -3
  144. data/lib/puppet/pops/model/model_label_provider.rb +10 -1
  145. data/lib/puppet/pops/model/model_meta.rb +19 -1
  146. data/lib/puppet/pops/model/model_tree_dumper.rb +18 -0
  147. data/lib/puppet/pops/parser/code_merger.rb +13 -1
  148. data/lib/puppet/pops/parser/egrammar.ra +65 -2
  149. data/lib/puppet/pops/parser/eparser.rb +1569 -1241
  150. data/lib/puppet/pops/parser/lexer2.rb +32 -1
  151. data/lib/puppet/pops/parser/locator.rb +1 -1
  152. data/lib/puppet/pops/parser/parser_support.rb +25 -13
  153. data/lib/puppet/pops/patterns.rb +3 -0
  154. data/lib/puppet/pops/types/enumeration.rb +1 -2
  155. data/lib/puppet/pops/types/type_asserter.rb +16 -15
  156. data/lib/puppet/pops/types/type_assertion_error.rb +1 -0
  157. data/lib/puppet/pops/types/type_calculator.rb +171 -1020
  158. data/lib/puppet/pops/types/type_factory.rb +87 -148
  159. data/lib/puppet/pops/types/type_mismatch_describer.rb +743 -0
  160. data/lib/puppet/pops/types/type_parser.rb +118 -129
  161. data/lib/puppet/pops/types/types.rb +1394 -255
  162. data/lib/puppet/pops/types/types_meta.rb +0 -234
  163. data/lib/puppet/pops/validation/checker4_0.rb +49 -1
  164. data/lib/puppet/pops/validation/validator_factory_4_0.rb +3 -1
  165. data/lib/puppet/pops/validation.rb +7 -2
  166. data/lib/puppet/pops.rb +19 -17
  167. data/lib/puppet/provider/augeas/augeas.rb +50 -0
  168. data/lib/puppet/provider/exec.rb +6 -1
  169. data/lib/puppet/provider/group/directoryservice.rb +10 -0
  170. data/lib/puppet/provider/package/dnf.rb +41 -0
  171. data/lib/puppet/provider/package/gem.rb +7 -2
  172. data/lib/puppet/provider/package/nim.rb +1 -1
  173. data/lib/puppet/provider/package/rpm.rb +1 -0
  174. data/lib/puppet/provider/package/windows/exe_package.rb +10 -8
  175. data/lib/puppet/provider/package/windows/msi_package.rb +4 -3
  176. data/lib/puppet/provider/package/windows/package.rb +9 -1
  177. data/lib/puppet/provider/package/yum.rb +20 -9
  178. data/lib/puppet/provider/service/bsd.rb +1 -1
  179. data/lib/puppet/provider/service/debian.rb +21 -0
  180. data/lib/puppet/provider/service/init.rb +6 -0
  181. data/lib/puppet/provider/service/launchd.rb +36 -7
  182. data/lib/puppet/provider/service/rcng.rb +51 -0
  183. data/lib/puppet/provider/service/redhat.rb +2 -1
  184. data/lib/puppet/provider/service/smf.rb +43 -2
  185. data/lib/puppet/provider/service/src.rb +27 -0
  186. data/lib/puppet/provider/service/systemd.rb +25 -5
  187. data/lib/puppet/provider/sshkey/parsed.rb +19 -9
  188. data/lib/puppet/provider/zone/solaris.rb +2 -2
  189. data/lib/puppet/reference/configuration.rb +10 -4
  190. data/lib/puppet/reference/report.rb +9 -12
  191. data/lib/puppet/reports.rb +5 -1
  192. data/lib/puppet/resource/capability_finder.rb +95 -0
  193. data/lib/puppet/resource/catalog.rb +47 -7
  194. data/lib/puppet/resource/status.rb +0 -2
  195. data/lib/puppet/resource/type.rb +238 -44
  196. data/lib/puppet/resource/type_collection.rb +60 -2
  197. data/lib/puppet/resource.rb +50 -73
  198. data/lib/puppet/settings/file_setting.rb +10 -9
  199. data/lib/puppet/settings.rb +2 -2
  200. data/lib/puppet/ssl/certificate_authority/interface.rb +2 -2
  201. data/lib/puppet/ssl/oids.rb +9 -1
  202. data/lib/puppet/transaction/additional_resource_generator.rb +71 -8
  203. data/lib/puppet/transaction/resource_harness.rb +9 -4
  204. data/lib/puppet/transaction.rb +8 -1
  205. data/lib/puppet/type/augeas.rb +8 -0
  206. data/lib/puppet/type/file/source.rb +14 -12
  207. data/lib/puppet/type/package.rb +9 -6
  208. data/lib/puppet/type/user.rb +4 -2
  209. data/lib/puppet/type.rb +78 -7
  210. data/lib/puppet/util/command_line.rb +4 -0
  211. data/lib/puppet/util/execution.rb +18 -2
  212. data/lib/puppet/util/tagging.rb +7 -1
  213. data/lib/puppet/util/windows/adsi.rb +5 -2
  214. data/lib/puppet/util/windows/security.rb +4 -1
  215. data/lib/puppet/util/windows/taskscheduler.rb +1 -1
  216. data/lib/puppet/util.rb +9 -1
  217. data/lib/puppet/version.rb +1 -1
  218. data/lib/puppet.rb +12 -0
  219. data/spec/fixtures/unit/application/environments/production/data/common.yaml +3 -0
  220. data/spec/fixtures/unit/application/environments/production/environment.conf +1 -0
  221. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/data/bad.json +3 -0
  222. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/environment.conf +2 -0
  223. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/hiera.yaml +5 -0
  224. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/manifests/site.pp +5 -0
  225. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/data/bad.yaml +3 -0
  226. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/environment.conf +2 -0
  227. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/hiera.yaml +5 -0
  228. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/manifests/site.pp +5 -0
  229. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/data/common.yaml +2 -0
  230. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/environment.conf +2 -0
  231. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/manifests/site.pp +1 -0
  232. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/data/common.yaml +2 -0
  233. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/manifests/init.pp +5 -0
  234. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/metadata.json +9 -0
  235. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/first.json +3 -0
  236. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/name.yaml +2 -0
  237. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/second.json +3 -0
  238. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/single.yaml +2 -0
  239. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data2/single.yaml +2 -0
  240. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/environment.conf +2 -0
  241. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +18 -0
  242. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +5 -0
  243. data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +46 -0
  244. data/spec/fixtures/unit/data_providers/environments/hiera_misc/environment.conf +2 -0
  245. data/spec/fixtures/unit/data_providers/environments/hiera_misc/manifests/site.pp +1 -0
  246. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/data/common.yaml +30 -0
  247. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/manifests/init.pp +13 -0
  248. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/metadata.json +9 -0
  249. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/environment.conf +2 -0
  250. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/manifests/site.pp +1 -0
  251. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/first.json +3 -0
  252. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/name.yaml +1 -0
  253. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/second.json +3 -0
  254. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/single.yaml +2 -0
  255. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data2/single.yaml +2 -0
  256. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/hiera.yaml +18 -0
  257. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/manifests/init.pp +5 -0
  258. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/metadata.json +9 -0
  259. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +1 -0
  260. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_module_data.rb +1 -0
  261. data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +3 -0
  262. data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/hiera.yaml +8 -0
  263. data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/manifests/init.pp +5 -0
  264. data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/metadata.json +9 -0
  265. data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +9 -0
  266. data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/manifests/init.pp +3 -0
  267. data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/metadata.json +9 -0
  268. data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +10 -0
  269. data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +23 -0
  270. data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/manifests/init.pp +3 -0
  271. data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/metadata.json +9 -0
  272. data/spec/fixtures/unit/provider/package/yum/yum-check-update-security.txt +184 -0
  273. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_get/should_yield_to_the_block.yml +24 -0
  274. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_head/should_yield_to_the_block.yml +24 -0
  275. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_post/should_yield_to_the_block.yml +24 -0
  276. data/spec/integration/data_binding_spec.rb +229 -0
  277. data/spec/integration/file_bucket/file_spec.rb +2 -2
  278. data/spec/integration/parser/compiler_spec.rb +30 -24
  279. data/spec/integration/parser/resource_expressions_spec.rb +4 -4
  280. data/spec/integration/parser/undef_param_spec.rb +1 -1
  281. data/spec/integration/provider/package_spec.rb +3 -1
  282. data/spec/integration/resource/catalog_spec.rb +1 -1
  283. data/spec/integration/ssl/certificate_authority_spec.rb +0 -1
  284. data/spec/integration/ssl/certificate_request_spec.rb +0 -1
  285. data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -1
  286. data/spec/integration/ssl/host_spec.rb +0 -1
  287. data/spec/integration/type/package_spec.rb +2 -0
  288. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  289. data/spec/integration/util/windows/security_spec.rb +18 -0
  290. data/spec/lib/matchers/include_in_order.rb +2 -2
  291. data/spec/shared_behaviours/iterative_functions.rb +8 -8
  292. data/spec/spec_helper.rb +7 -0
  293. data/spec/unit/agent/locker_spec.rb +4 -4
  294. data/spec/unit/agent_spec.rb +0 -8
  295. data/spec/unit/application/agent_spec.rb +5 -0
  296. data/spec/unit/application/apply_spec.rb +9 -1
  297. data/spec/unit/application/filebucket_spec.rb +88 -2
  298. data/spec/unit/application/lookup_spec.rb +195 -0
  299. data/spec/unit/application/master_spec.rb +2 -2
  300. data/spec/unit/application_spec.rb +3 -3
  301. data/spec/unit/appmgmt_spec.rb +657 -0
  302. data/spec/unit/capability_spec.rb +414 -0
  303. data/spec/unit/configurer_spec.rb +7 -1
  304. data/spec/unit/context/trusted_information_spec.rb +24 -1
  305. data/spec/unit/daemon_spec.rb +18 -8
  306. data/spec/unit/data_providers/hiera_data_provider_spec.rb +201 -0
  307. data/spec/unit/environments_spec.rb +2 -0
  308. data/spec/unit/face/node_spec.rb +1 -1
  309. data/spec/unit/file_bucket/dipper_spec.rb +210 -1
  310. data/spec/unit/file_serving/configuration_spec.rb +1 -1
  311. data/spec/unit/file_system_spec.rb +20 -0
  312. data/spec/unit/functions/assert_type_spec.rb +5 -7
  313. data/spec/unit/functions/defined_spec.rb +2 -2
  314. data/spec/unit/functions/epp_spec.rb +2 -2
  315. data/spec/unit/functions/filter_spec.rb +18 -0
  316. data/spec/unit/functions/hiera_spec.rb +2 -2
  317. data/spec/unit/functions/lookup_spec.rb +200 -9
  318. data/spec/unit/functions/regsubst_spec.rb +17 -8
  319. data/spec/unit/functions/scanf_spec.rb +1 -1
  320. data/spec/unit/functions/split_spec.rb +2 -2
  321. data/spec/unit/functions/versioncmp_spec.rb +36 -0
  322. data/spec/unit/functions4_spec.rb +58 -72
  323. data/spec/unit/graph/sequential_prioritizer_spec.rb +1 -1
  324. data/spec/unit/indirector/catalog/compiler_spec.rb +28 -8
  325. data/spec/unit/indirector/catalog/static_compiler_spec.rb +38 -20
  326. data/spec/unit/indirector/data_binding/none_spec.rb +2 -2
  327. data/spec/unit/indirector/file_bucket_file/file_spec.rb +52 -1
  328. data/spec/unit/indirector/indirection_spec.rb +13 -2
  329. data/spec/unit/indirector/request_spec.rb +8 -8
  330. data/spec/unit/indirector/ssl_file_spec.rb +1 -1
  331. data/spec/unit/indirector/yaml_spec.rb +1 -1
  332. data/spec/unit/info_service_spec.rb +236 -0
  333. data/spec/unit/module_tool/application_spec.rb +1 -1
  334. data/spec/unit/module_tool/applications/builder_spec.rb +1 -1
  335. data/spec/unit/module_tool/metadata_spec.rb +31 -2
  336. data/spec/unit/network/authconfig_spec.rb +62 -32
  337. data/spec/unit/network/authorization_spec.rb +30 -2
  338. data/spec/unit/network/authstore_spec.rb +1 -1
  339. data/spec/unit/network/http/compression_spec.rb +1 -1
  340. data/spec/unit/network/http/connection_spec.rb +14 -19
  341. data/spec/unit/network/http/handler_spec.rb +0 -5
  342. data/spec/unit/network/rights_spec.rb +3 -3
  343. data/spec/unit/node_spec.rb +27 -0
  344. data/spec/unit/parser/ast/leaf_spec.rb +1 -1
  345. data/spec/unit/parser/compiler_spec.rb +86 -2
  346. data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
  347. data/spec/unit/parser/resource_spec.rb +2 -20
  348. data/spec/unit/pops/binder/config/binder_config_spec.rb +1 -1
  349. data/spec/unit/pops/binder/injector_spec.rb +3 -3
  350. data/spec/unit/pops/evaluator/access_ops_spec.rb +13 -11
  351. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +1 -2
  352. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +20 -11
  353. data/spec/unit/pops/evaluator/literal_evaluator_spec.rb +43 -0
  354. data/spec/unit/pops/label_provider_spec.rb +5 -1
  355. data/spec/unit/pops/parser/lexer2_spec.rb +39 -0
  356. data/spec/unit/pops/parser/parse_application_spec.rb +40 -0
  357. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +4 -0
  358. data/spec/unit/pops/parser/parse_capabilities_spec.rb +47 -0
  359. data/spec/unit/pops/parser/parse_site_spec.rb +38 -0
  360. data/spec/unit/pops/parser/parser_rspec_helper.rb +5 -0
  361. data/spec/unit/pops/parser/parser_spec.rb +18 -0
  362. data/spec/unit/pops/types/type_calculator_spec.rb +427 -444
  363. data/spec/unit/pops/types/type_factory_spec.rb +12 -12
  364. data/spec/unit/pops/types/type_parser_spec.rb +15 -12
  365. data/spec/unit/pops/validator/validator_spec.rb +68 -0
  366. data/spec/unit/property_spec.rb +1 -1
  367. data/spec/unit/provider/augeas/augeas_spec.rb +50 -0
  368. data/spec/unit/provider/group/directoryservice_spec.rb +33 -0
  369. data/spec/unit/provider/group/windows_adsi_spec.rb +3 -0
  370. data/spec/unit/provider/package/dnf_spec.rb +92 -0
  371. data/spec/unit/provider/package/gem_spec.rb +7 -0
  372. data/spec/unit/provider/package/nim_spec.rb +6 -6
  373. data/spec/unit/provider/package/rpm_spec.rb +25 -2
  374. data/spec/unit/provider/package/windows/package_spec.rb +41 -0
  375. data/spec/unit/provider/package/yum_spec.rb +35 -12
  376. data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +10 -0
  377. data/spec/unit/provider/service/debian_spec.rb +28 -0
  378. data/spec/unit/provider/service/gentoo_spec.rb +1 -0
  379. data/spec/unit/provider/service/init_spec.rb +6 -0
  380. data/spec/unit/provider/service/launchd_spec.rb +85 -10
  381. data/spec/unit/provider/service/openrc_spec.rb +1 -0
  382. data/spec/unit/provider/service/rcng_spec.rb +41 -0
  383. data/spec/unit/provider/service/redhat_spec.rb +8 -1
  384. data/spec/unit/provider/service/smf_spec.rb +30 -5
  385. data/spec/unit/provider/service/src_spec.rb +20 -4
  386. data/spec/unit/provider/service/systemd_spec.rb +79 -29
  387. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +1 -1
  388. data/spec/unit/provider/sshkey/parsed_spec.rb +23 -0
  389. data/spec/unit/provider/user/windows_adsi_spec.rb +2 -1
  390. data/spec/unit/provider/zone/solaris_spec.rb +19 -0
  391. data/spec/unit/reports_spec.rb +10 -0
  392. data/spec/unit/resource/capability_finder_spec.rb +56 -0
  393. data/spec/unit/resource/catalog_spec.rb +31 -8
  394. data/spec/unit/resource/type_collection_spec.rb +23 -2
  395. data/spec/unit/resource/type_spec.rb +1 -1
  396. data/spec/unit/resource_spec.rb +23 -5
  397. data/spec/unit/settings/file_setting_spec.rb +31 -0
  398. data/spec/unit/settings_spec.rb +91 -2
  399. data/spec/unit/ssl/certificate_authority/interface_spec.rb +4 -3
  400. data/spec/unit/ssl/certificate_authority_spec.rb +5 -3
  401. data/spec/unit/ssl/host_spec.rb +2 -2
  402. data/spec/unit/ssl/oids_spec.rb +8 -0
  403. data/spec/unit/transaction/additional_resource_generator_spec.rb +78 -5
  404. data/spec/unit/transaction/report_spec.rb +24 -1
  405. data/spec/unit/transaction_spec.rb +7 -0
  406. data/spec/unit/type/exec_spec.rb +16 -8
  407. data/spec/unit/type/host_spec.rb +4 -4
  408. data/spec/unit/type/package_spec.rb +1 -0
  409. data/spec/unit/type/tidy_spec.rb +4 -4
  410. data/spec/unit/type/user_spec.rb +14 -7
  411. data/spec/unit/type/vlan_spec.rb +1 -1
  412. data/spec/unit/type_spec.rb +1 -1
  413. data/spec/unit/util/ldap/generator_spec.rb +1 -1
  414. data/spec/unit/util/network_device/cisco/device_spec.rb +1 -1
  415. data/spec/unit/util/network_device/transport/ssh_spec.rb +1 -1
  416. data/spec/unit/util/network_device_spec.rb +1 -1
  417. data/spec/unit/util/storage_spec.rb +5 -1
  418. data/spec/unit/util/windows/adsi_spec.rb +13 -0
  419. data/spec/unit/util_spec.rb +21 -2
  420. metadata +173 -7
  421. data/lib/puppet/pops/evaluator/callable_mismatch_describer.rb +0 -175
  422. data/spec/integration/data_binding.rb +0 -104
@@ -0,0 +1,8 @@
1
+ ---
2
+ :version: 4
3
+ :hierarchy:
4
+ - :name: "two paths"
5
+ :backend: json
6
+ :paths:
7
+ - "first"
8
+ - "second_not_present"
@@ -0,0 +1,5 @@
1
+ class hieraprovider {
2
+ class test($param_a = "param default is 100") {
3
+ notify { "$param_a": }
4
+ }
5
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "example/hieraprovider",
3
+ "version": "0.0.2",
4
+ "source": "git@github.com/example/example-hieraprovider.git",
5
+ "dependencies": [],
6
+ "author": "Bob the Builder",
7
+ "license": "Apache-2.0",
8
+ "data_provider": "hiera"
9
+ }
@@ -0,0 +1,9 @@
1
+ Puppet::Functions.create_function(:'meta::data') do
2
+ def data()
3
+ { 'meta::b' => 'module_b',
4
+ 'meta::c' => 'module_c',
5
+ 'meta::e' => { 'k1' => 'module_e1', 'k2' => 'module_e2' },
6
+ 'meta::f' => { 'k1' => { 's1' => 'module_f11', 's3' => 'module_f13' }, 'k2' => { 's1' => 'module_f21', 's2' => 'module_f22' }},
7
+ }
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ class meta {
2
+ $result = lookup(*$args)
3
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "example/meta",
3
+ "version": "0.0.2",
4
+ "source": "git@github.com/example/example-meta.git",
5
+ "dependencies": [],
6
+ "author": "Bob the Builder",
7
+ "license": "Apache-2.0",
8
+ "data_provider": "function"
9
+ }
@@ -0,0 +1,10 @@
1
+ Puppet::Bindings.newbindings('metawcp::default') do
2
+ # Make the SampleModuleData provider available for use in modules
3
+ # as 'sample'.
4
+ #
5
+ bind {
6
+ name 'sample'
7
+ in_multibind 'puppet::module_data_providers'
8
+ to_instance 'PuppetX::Thallgren::SampleModuleData'
9
+ }
10
+ end
@@ -0,0 +1,23 @@
1
+ # The module is named after the author, to ensure that names under PuppetX namespace
2
+ # does not clash.
3
+ #
4
+ require 'puppet_x'
5
+
6
+ module PuppetX::Thallgren
7
+ class SampleModuleData < Puppet::Plugins::DataProviders::ModuleDataProvider
8
+ def initialize()
9
+ @data = {
10
+ 'metawcp::b' => 'module_b',
11
+ 'metawcp::c' => 'module_c',
12
+ 'metawcp::e' => { 'k1' => 'module_e1', 'k2' => 'module_e2' },
13
+ 'metawcp::f' => { 'k1' => { 's1' => 'module_f11', 's3' => 'module_f13' }, 'k2' => { 's1' => 'module_f21', 's2' => 'module_f22' }},
14
+ }
15
+ end
16
+
17
+ def lookup(name, scope, merge)
18
+ throw :no_such_key unless @data.include?(name)
19
+ @data[name]
20
+ end
21
+ end
22
+ end
23
+
@@ -0,0 +1,3 @@
1
+ class metawcp {
2
+ $result = lookup(*$args)
3
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "example/metawcp",
3
+ "version": "0.0.2",
4
+ "source": "git@github.com/example/example-metawcp.git",
5
+ "dependencies": [],
6
+ "author": "Bob the Builder",
7
+ "license": "Apache-2.0",
8
+ "data_provider": "sample"
9
+ }
@@ -0,0 +1,184 @@
1
+ Loaded plugins: fastestmirror
2
+ Loading mirror speeds from cached hostfile
3
+
4
+ NetworkManager.x86_64 1:1.0.0-14.git20150121.b4ea599c.el7 base
5
+ NetworkManager-glib.x86_64 1:1.0.0-14.git20150121.b4ea599c.el7 base
6
+ NetworkManager-tui.x86_64 1:1.0.0-14.git20150121.b4ea599c.el7 base
7
+ alsa-firmware.noarch 1.0.28-2.el7 base
8
+ alsa-lib.x86_64 1.0.28-2.el7 base
9
+ audit.x86_64 2.4.1-5.el7 base
10
+ audit-libs.x86_64 2.4.1-5.el7 base
11
+ authconfig.x86_64 6.2.8-9.el7 base
12
+ avahi.x86_64 0.6.31-14.el7 base
13
+ avahi-autoipd.x86_64 0.6.31-14.el7 base
14
+ avahi-libs.x86_64 0.6.31-14.el7 base
15
+ bash.x86_64 4.2.46-12.el7 base
16
+ bind-libs-lite.x86_64 32:9.9.4-18.el7_1.1 updates
17
+ bind-license.noarch 32:9.9.4-18.el7_1.1 updates
18
+ binutils.x86_64 2.23.52.0.1-30.el7_1.2 updates
19
+ biosdevname.x86_64 0.6.1-2.el7 base
20
+ btrfs-progs.x86_64 3.16.2-1.el7 base
21
+ ca-certificates.noarch 2015.2.4-70.0.el7_1 updates
22
+ centos-logos.noarch 70.0.6-2.el7.centos updates
23
+ centos-release.x86_64 7-1.1503.el7.centos.2.8 base
24
+ cpp.x86_64 4.8.3-9.el7 base
25
+ cronie.x86_64 1.4.11-13.el7 base
26
+ cronie-anacron.x86_64 1.4.11-13.el7 base
27
+ cryptsetup-libs.x86_64 1.6.6-3.el7 base
28
+ dbus.x86_64 1:1.6.12-11.el7 base
29
+ dbus-libs.x86_64 1:1.6.12-11.el7 base
30
+ device-mapper.x86_64 7:1.02.93-3.el7 base
31
+ device-mapper-event.x86_64 7:1.02.93-3.el7 base
32
+ device-mapper-event-libs.x86_64 7:1.02.93-3.el7 base
33
+ device-mapper-libs.x86_64 7:1.02.93-3.el7 base
34
+ device-mapper-persistent-data.x86_64
35
+ 0.4.1-2.el7 base
36
+ dhclient.x86_64 12:4.2.5-36.el7.centos base
37
+ dhcp-common.x86_64 12:4.2.5-36.el7.centos base
38
+ dhcp-libs.x86_64 12:4.2.5-36.el7.centos base
39
+ dnsmasq.x86_64 2.66-13.el7_1 updates
40
+ dracut.x86_64 033-241.el7_1.1 updates
41
+ dracut-config-rescue.x86_64 033-241.el7_1.1 updates
42
+ dracut-network.x86_64 033-241.el7_1.1 updates
43
+ e2fsprogs.x86_64 1.42.9-7.el7 base
44
+ e2fsprogs-libs.x86_64 1.42.9-7.el7 base
45
+ elfutils-libelf.x86_64 0.160-1.el7 base
46
+ elfutils-libs.x86_64 0.160-1.el7 base
47
+ ethtool.x86_64 2:3.15-2.el7 base
48
+ firewalld.noarch 0.3.9-11.el7 base
49
+ freetype.x86_64 2.4.11-10.el7_1.1 updates
50
+ gcc.x86_64 4.8.3-9.el7 base
51
+ glib-networking.x86_64 2.40.0-1.el7 base
52
+ glib2.x86_64 2.40.0-4.el7 base
53
+ glibc.x86_64 2.17-78.el7 base
54
+ glibc-common.x86_64 2.17-78.el7 base
55
+ glibc-devel.x86_64 2.17-78.el7 base
56
+ glibc-headers.x86_64 2.17-78.el7 base
57
+ gmp.x86_64 1:6.0.0-11.el7 base
58
+ gnutls.x86_64 3.3.8-12.el7 base
59
+ grep.x86_64 2.20-1.el7 base
60
+ grub2.x86_64 1:2.02-0.16.el7.centos base
61
+ grub2-tools.x86_64 1:2.02-0.16.el7.centos base
62
+ grubby.x86_64 8.28-11.el7 base
63
+ hwdata.noarch 0.252-7.5.el7 base
64
+ hwdata.x86_64 0.252-7.8.el7_1 updates
65
+ initscripts.x86_64 9.49.24-1.el7 base
66
+ iproute.x86_64 3.10.0-21.el7 base
67
+ iprutils.x86_64 2.4.3-3.el7 base
68
+ irqbalance.x86_64 2:1.0.7-1.el7 base
69
+ iwl100-firmware.noarch 39.31.5.1-36.el7 base
70
+ iwl1000-firmware.noarch 1:39.31.5.1-36.el7 base
71
+ iwl105-firmware.noarch 18.168.6.1-36.el7 base
72
+ iwl135-firmware.noarch 18.168.6.1-36.el7 base
73
+ iwl2000-firmware.noarch 18.168.6.1-36.el7 base
74
+ iwl2030-firmware.noarch 18.168.6.1-36.el7 base
75
+ iwl3160-firmware.noarch 22.0.7.0-36.el7 base
76
+ iwl3945-firmware.noarch 15.32.2.9-36.el7 base
77
+ iwl4965-firmware.noarch 228.61.2.24-36.el7 base
78
+ iwl5000-firmware.noarch 8.83.5.1_1-36.el7 base
79
+ iwl5150-firmware.noarch 8.24.2.2-36.el7 base
80
+ iwl6000-firmware.noarch 9.221.4.1-36.el7 base
81
+ iwl6000g2a-firmware.noarch 17.168.5.3-36.el7 base
82
+ iwl6000g2b-firmware.noarch 17.168.5.2-36.el7 base
83
+ iwl6050-firmware.noarch 41.28.5.1-36.el7 base
84
+ iwl7260-firmware.noarch 22.0.7.0-36.el7 base
85
+ kbd.x86_64 1.15.5-11.el7 base
86
+ kbd-misc.noarch 1.15.5-11.el7 base
87
+ kernel.x86_64 3.10.0-229.4.2.el7 updates
88
+ kernel-headers.x86_64 3.10.0-229.4.2.el7 updates
89
+ kernel-tools.x86_64 3.10.0-229.4.2.el7 updates
90
+ kernel-tools-libs.x86_64 3.10.0-229.4.2.el7 updates
91
+ kexec-tools.x86_64 2.0.7-19.el7_1.2 updates
92
+ kmod.x86_64 14-10.el7 base
93
+ kmod-libs.x86_64 14-10.el7 base
94
+ kpartx.x86_64 0.4.9-77.el7 base
95
+ krb5-libs.x86_64 1.12.2-14.el7 base
96
+ libblkid.x86_64 2.23.2-22.el7_1 updates
97
+ libcom_err.x86_64 1.42.9-7.el7 base
98
+ libdb.x86_64 5.3.21-17.el7_0.1 base
99
+ libdb-utils.x86_64 5.3.21-17.el7_0.1 base
100
+ libdrm.x86_64 2.4.56-2.el7 base
101
+ libgcc.x86_64 4.8.3-9.el7 base
102
+ libgcrypt.x86_64 1.5.3-12.el7_1.1 updates
103
+ libgcrypt-devel.x86_64 1.5.3-12.el7_1.1 updates
104
+ libgomp.x86_64 4.8.3-9.el7 base
105
+ libgudev1.x86_64 208-20.el7_1.3 updates
106
+ libmount.x86_64 2.23.2-22.el7_1 updates
107
+ libnl3.x86_64 3.2.21-8.el7 base
108
+ libnl3-cli.x86_64 3.2.21-8.el7 base
109
+ libpcap.x86_64 14:1.5.3-4.el7_1.2 updates
110
+ libsoup.x86_64 2.46.0-3.el7 base
111
+ libss.x86_64 1.42.9-7.el7 base
112
+ libstdc++.x86_64 4.8.3-9.el7 base
113
+ libtasn1.x86_64 3.8-2.el7 base
114
+ libteam.x86_64 1.15-1.el7 base
115
+ libuuid.x86_64 2.23.2-22.el7_1 updates
116
+ libxml2.x86_64 2.9.1-5.el7_1.2 updates
117
+ libxml2-devel.x86_64 2.9.1-5.el7_1.2 updates
118
+ libyaml.x86_64 0.1.4-11.el7_0 base
119
+ linux-firmware.noarch 20140911-0.1.git365e80c.el7 base
120
+ lvm2.x86_64 7:2.02.115-3.el7 base
121
+ lvm2-libs.x86_64 7:2.02.115-3.el7 base
122
+ mariadb-libs.x86_64 1:5.5.41-2.el7_0 base
123
+ microcode_ctl.x86_64 2:2.1-10.el7 base
124
+ nettle.x86_64 2.7.1-4.el7 base
125
+ nspr.x86_64 4.10.8-1.el7_1 updates
126
+ nss.x86_64 3.18.0-2.2.el7_1 updates
127
+ nss-softokn.x86_64 3.16.2.3-9.el7 base
128
+ nss-softokn-freebl.x86_64 3.16.2.3-9.el7 base
129
+ nss-sysinit.x86_64 3.18.0-2.2.el7_1 updates
130
+ nss-tools.x86_64 3.18.0-2.2.el7_1 updates
131
+ nss-util.x86_64 3.18.0-1.el7_1 updates
132
+ ntpdate.x86_64 4.2.6p5-19.el7.centos base
133
+ numactl-libs.x86_64 2.0.9-4.el7 base
134
+ open-vm-tools.x86_64 9.4.0-6.el7 base
135
+ openldap.x86_64 2.4.39-6.el7 base
136
+ openssh.x86_64 6.6.1p1-12.el7_1 updates
137
+ openssh-clients.x86_64 6.6.1p1-12.el7_1 updates
138
+ openssh-server.x86_64 6.6.1p1-12.el7_1 updates
139
+ openssl.x86_64 1:1.0.1e-42.el7.4 updates
140
+ openssl-libs.x86_64 1:1.0.1e-42.el7.4 updates
141
+ p11-kit.x86_64 0.20.7-3.el7 base
142
+ p11-kit-trust.x86_64 0.20.7-3.el7 base
143
+ pam.x86_64 1.1.8-12.el7 base
144
+ parted.x86_64 3.1-20.el7 base
145
+ pcre.x86_64 8.32-14.el7 base
146
+ plymouth.x86_64 0.8.9-0.13.20140113.el7.centos base
147
+ plymouth-core-libs.x86_64 0.8.9-0.13.20140113.el7.centos base
148
+ plymouth-scripts.x86_64 0.8.9-0.13.20140113.el7.centos base
149
+ policycoreutils.x86_64 2.2.5-15.el7 base
150
+ procps-ng.x86_64 3.3.10-3.el7 base
151
+ pygobject3-base.x86_64 3.8.2-6.el7 base
152
+ python-backports.x86_64 1.0-8.el7 base
153
+ python-urlgrabber.noarch 3.10-6.el7 base
154
+ rpm.x86_64 4.11.1-25.el7 base
155
+ rpm-build-libs.x86_64 4.11.1-25.el7 base
156
+ rpm-libs.x86_64 4.11.1-25.el7 base
157
+ rpm-python.x86_64 4.11.1-25.el7 base
158
+ rsyslog.x86_64 7.4.7-7.el7_0 base
159
+ rubygem-bigdecimal.x86_64 1.2.0-24.el7 base
160
+ rubygem-io-console.x86_64 0.4.2-24.el7 base
161
+ rubygem-json.x86_64 1.7.7-24.el7 base
162
+ rubygem-psych.x86_64 2.0.0-24.el7 base
163
+ rubygems.noarch 2.0.14-24.el7 base
164
+ selinux-policy.noarch 3.13.1-23.el7_1.7 updates
165
+ selinux-policy-targeted.noarch 3.13.1-23.el7_1.7 updates
166
+ setup.noarch 2.8.71-5.el7 base
167
+ shadow-utils.x86_64 2:4.1.5.1-18.el7 base
168
+ sudo.x86_64 1.8.6p7-13.el7 base
169
+ systemd.x86_64 208-20.el7_1.3 updates
170
+ systemd-libs.x86_64 208-20.el7_1.3 updates
171
+ systemd-sysv.x86_64 208-20.el7_1.3 updates
172
+ teamd.x86_64 1.15-1.el7 base
173
+ tuned.noarch 2.4.1-1.el7 base
174
+ tzdata.noarch 2015d-1.el7 updates
175
+ util-linux.x86_64 2.23.2-22.el7_1 updates
176
+ wpa_supplicant.x86_64 1:2.0-13.el7_0 base
177
+ xfsprogs.x86_64 3.2.1-6.el7 base
178
+ xz.x86_64 5.1.2-9alpha.el7 base
179
+ xz-devel.x86_64 5.1.2-9alpha.el7 base
180
+ xz-libs.x86_64 5.1.2-9alpha.el7 base
181
+ yum.noarch 3.4.3-125.el7.centos base
182
+ yum-plugin-fastestmirror.noarch 1.1.31-29.el7 base
183
+ Security: kernel-3.10.0-229.14.1.el7.x86_64 is an installed security update
184
+ Security: kernel-3.10.0-229.11.1.el7.x86_64 is the currently running version
@@ -0,0 +1,24 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://my-server:8140/foo
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: ! 'OK '
18
+ headers: {}
19
+ body:
20
+ encoding: US-ASCII
21
+ string: ''
22
+ http_version:
23
+ recorded_at: Thu, 19 Mar 2015 22:44:49 GMT
24
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,24 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: head
5
+ uri: http://my-server:8140/foo
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: ! 'OK '
18
+ headers: {}
19
+ body:
20
+ encoding: US-ASCII
21
+ string: ''
22
+ http_version:
23
+ recorded_at: Thu, 19 Mar 2015 22:44:49 GMT
24
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,24 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: http://my-server:8140/foo
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ! 'param: value'
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: ! 'OK '
18
+ headers: {}
19
+ body:
20
+ encoding: US-ASCII
21
+ string: ''
22
+ http_version:
23
+ recorded_at: Thu, 19 Mar 2015 23:15:40 GMT
24
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,229 @@
1
+ require 'spec_helper'
2
+
3
+ require 'puppet_spec/compiler'
4
+
5
+ describe "Data binding" do
6
+ include PuppetSpec::Files
7
+ include PuppetSpec::Compiler
8
+
9
+ let(:dir) { tmpdir("puppetdir") }
10
+ let(:data) {{
11
+ 'global' => {
12
+ 'testing::binding::value' => 'the value',
13
+ 'testing::binding::calling_class' => '%{calling_class}',
14
+ 'testing::binding::calling_class_path' => '%{calling_class_path}'
15
+ }
16
+ }}
17
+ let(:hash_data) {{
18
+ 'global' => {
19
+ 'testing::hash::options' => {
20
+ 'key' => 'value',
21
+ 'port' => '80',
22
+ 'bind' => 'localhost'
23
+ }
24
+ },
25
+ 'agent.example.com' => {
26
+ 'testing::hash::options' => {
27
+ 'key' => 'new value',
28
+ 'port' => '443'
29
+ }
30
+ }
31
+ }}
32
+ let(:hash_data_with_lopts) {{
33
+ 'global' => {
34
+ 'testing::hash::options' => {
35
+ 'key' => 'value',
36
+ 'port' => '80',
37
+ 'bind' => 'localhost'
38
+ }
39
+ },
40
+ 'agent.example.com' => {
41
+ 'lookup_options' => {
42
+ 'testing::hash::options' => {
43
+ 'merge' => 'deep'
44
+ }
45
+ },
46
+ 'testing::hash::options' => {
47
+ 'key' => 'new value',
48
+ 'port' => '443'
49
+ }
50
+ }
51
+ }}
52
+
53
+ before do
54
+ # Drop all occurances of cached hiera instances. This will reset @hiera in Puppet::Indirector::Hiera, Testing::DataBinding::Hiera,
55
+ # and Puppet::DataBinding::Hiera. Different classes are active as indirection depending on configuration
56
+ ObjectSpace.each_object(Class).select {|klass| klass <= Puppet::Indirector::Hiera }.each { |klass| klass.instance_variable_set(:@hiera, nil) }
57
+ Puppet[:data_binding_terminus] = 'hiera'
58
+ Puppet[:modulepath] = dir
59
+ end
60
+
61
+ it "works with the puppet backend configured, although it can't use it for lookup" do
62
+ configure_hiera_for_puppet
63
+ create_manifest_in_module("testing", "binding.pp",
64
+ <<-MANIFEST)
65
+ # lookup via the puppet backend to ensure it works
66
+ class testing::binding($value = hiera('variable')) {}
67
+ MANIFEST
68
+
69
+ create_manifest_in_module("testing", "data.pp",
70
+ <<-MANIFEST)
71
+ class testing::data (
72
+ $variable = "the value"
73
+ ) { }
74
+ MANIFEST
75
+
76
+ catalog = compile_to_catalog("include testing::data")
77
+ resource = catalog.resource('Class[testing::data]')
78
+
79
+ expect(resource[:variable]).to eq("the value")
80
+ end
81
+
82
+ context "with testing::binding and global data only" do
83
+ it "looks up global data from hiera" do
84
+ configure_hiera_for_one_tier(data)
85
+
86
+ create_manifest_in_module("testing", "binding.pp",
87
+ <<-MANIFEST)
88
+ class testing::binding($value,
89
+ $calling_class,
90
+ $calling_class_path,
91
+ $calling_module = $module_name) {}
92
+ MANIFEST
93
+
94
+ catalog = compile_to_catalog("include testing::binding")
95
+ resource = catalog.resource('Class[testing::binding]')
96
+
97
+ expect(resource[:value]).to eq("the value")
98
+ expect(resource[:calling_class]).to eq("testing::binding")
99
+ expect(resource[:calling_class_path]).to eq("testing/binding")
100
+ expect(resource[:calling_module]).to eq("testing")
101
+ end
102
+ end
103
+
104
+ context "with testing::hash and global data only" do
105
+ it "looks up global data from hiera" do
106
+ configure_hiera_for_one_tier(hash_data)
107
+
108
+ create_manifest_in_module("testing", "hash.pp",
109
+ <<-MANIFEST)
110
+ class testing::hash($options) {}
111
+ MANIFEST
112
+
113
+ catalog = compile_to_catalog("include testing::hash")
114
+ resource = catalog.resource('Class[testing::hash]')
115
+
116
+ expect(resource[:options]).to eq({
117
+ 'key' => 'value',
118
+ 'port' => '80',
119
+ 'bind' => 'localhost'
120
+ })
121
+ end
122
+ end
123
+
124
+ context "with custom clientcert" do
125
+ it "merges global data with agent.example.com data from hiera" do
126
+ configure_hiera_for_two_tier(hash_data)
127
+
128
+ create_manifest_in_module("testing", "hash.pp",
129
+ <<-MANIFEST)
130
+ class testing::hash($options) {}
131
+ MANIFEST
132
+
133
+ catalog = compile_to_catalog("include testing::hash")
134
+ resource = catalog.resource('Class[testing::hash]')
135
+
136
+ expect(resource[:options]).to eq({
137
+ 'key' => 'new value',
138
+ 'port' => '443',
139
+ })
140
+ end
141
+ end
142
+
143
+ context "with custom clientcert and with lookup_options" do
144
+ it "merges global data with agent.example.com data from hiera" do
145
+ configure_hiera_for_two_tier(hash_data_with_lopts)
146
+
147
+ create_manifest_in_module("testing", "hash.pp",
148
+ <<-MANIFEST)
149
+ class testing::hash($options) {}
150
+ MANIFEST
151
+
152
+ catalog = compile_to_catalog("include testing::hash")
153
+ resource = catalog.resource('Class[testing::hash]')
154
+
155
+ expect(resource[:options]).to eq({
156
+ 'key' => 'new value',
157
+ 'port' => '443',
158
+ 'bind' => 'localhost',
159
+ })
160
+ end
161
+ end
162
+
163
+
164
+ def configure_hiera_for_one_tier(data)
165
+ hiera_config_file = tmpfile("hiera.yaml")
166
+
167
+ File.open(hiera_config_file, 'w') do |f|
168
+ f.write("---
169
+ :yaml:
170
+ :datadir: #{dir}
171
+ :hierarchy: ['global']
172
+ :logger: 'noop'
173
+ :backends: ['yaml']
174
+ ")
175
+ end
176
+
177
+ data.each do | file, contents |
178
+ File.open(File.join(dir, "#{file}.yaml"), 'w') do |f|
179
+ f.write(YAML.dump(contents))
180
+ end
181
+ end
182
+
183
+ Puppet[:hiera_config] = hiera_config_file
184
+ end
185
+
186
+ def configure_hiera_for_two_tier(data)
187
+ hiera_config_file = tmpfile("hiera.yaml")
188
+
189
+ File.open(hiera_config_file, 'w') do |f|
190
+ f.write("---
191
+ :yaml:
192
+ :datadir: #{dir}
193
+ :hierarchy: ['agent.example.com', 'global']
194
+ :logger: 'noop'
195
+ :backends: ['yaml']
196
+ ")
197
+ end
198
+
199
+ data.each do | file, contents |
200
+ File.open(File.join(dir, "#{file}.yaml"), 'w') do |f|
201
+ f.write(YAML.dump(contents))
202
+ end
203
+ end
204
+
205
+ Puppet[:hiera_config] = hiera_config_file
206
+ end
207
+
208
+ def configure_hiera_for_puppet
209
+ hiera_config_file = tmpfile("hiera.yaml")
210
+
211
+ File.open(hiera_config_file, 'w') do |f|
212
+ f.write("---
213
+ :logger: 'noop'
214
+ :backends: ['puppet']
215
+ ")
216
+ end
217
+
218
+ Puppet[:hiera_config] = hiera_config_file
219
+ end
220
+
221
+ def create_manifest_in_module(module_name, name, manifest)
222
+ module_dir = File.join(dir, module_name, 'manifests')
223
+ FileUtils.mkdir_p(module_dir)
224
+
225
+ File.open(File.join(module_dir, name), 'w') do |f|
226
+ f.write(manifest)
227
+ end
228
+ end
229
+ end
@@ -18,7 +18,7 @@ describe Puppet::FileBucket::File do
18
18
 
19
19
  {
20
20
  "md5/d41d8cd98f00b204e9800998ecf8427e" => :file,
21
- "https://puppetmaster:8140/production/file_bucket_file/md5/d41d8cd98f00b204e9800998ecf8427e" => :file,
21
+ "filebucket://puppetmaster:8140/md5/d41d8cd98f00b204e9800998ecf8427e" => :file,
22
22
  }.each do |key, terminus|
23
23
  it "should use the #{terminus} terminus when requesting #{key.inspect}" do
24
24
  described_class.indirection.terminus(terminus).class.any_instance.expects(:find)
@@ -31,7 +31,7 @@ describe Puppet::FileBucket::File do
31
31
  describe "when running another application" do
32
32
  {
33
33
  "md5/d41d8cd98f00b204e9800998ecf8427e" => :file,
34
- "https://puppetmaster:8140/production/file_bucket_file/md5/d41d8cd98f00b204e9800998ecf8427e" => :rest,
34
+ "filebucket://puppetmaster:8140/md5/d41d8cd98f00b204e9800998ecf8427e" => :rest,
35
35
  }.each do |key, terminus|
36
36
  it "should use the #{terminus} terminus when requesting #{key.inspect}" do
37
37
  described_class.indirection.terminus(terminus).class.any_instance.expects(:find)