puppet 4.8.2-x86-mingw32 → 4.9.0-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (348) hide show
  1. checksums.yaml +15 -0
  2. data/CONTRIBUTING.md +25 -1
  3. data/Gemfile +6 -0
  4. data/Rakefile +1 -0
  5. data/ext/project_data.yaml +5 -1
  6. data/ext/windows/service/daemon.rb +2 -1
  7. data/install.rb +43 -6
  8. data/lib/hiera/puppet_function.rb +15 -17
  9. data/lib/hiera/scope.rb +12 -14
  10. data/lib/puppet.rb +52 -0
  11. data/lib/puppet/application/face_base.rb +4 -0
  12. data/lib/puppet/application/lookup.rb +4 -2
  13. data/lib/puppet/application/resource.rb +1 -1
  14. data/lib/puppet/data_providers.rb +6 -3
  15. data/lib/puppet/data_providers/data_adapter.rb +6 -0
  16. data/lib/puppet/data_providers/data_function_support.rb +7 -0
  17. data/lib/puppet/data_providers/function_env_data_provider.rb +7 -0
  18. data/lib/puppet/data_providers/function_module_data_provider.rb +6 -0
  19. data/lib/puppet/data_providers/hiera_config.rb +31 -10
  20. data/lib/puppet/data_providers/hiera_env_data_provider.rb +6 -0
  21. data/lib/puppet/data_providers/hiera_interpolate.rb +2 -1
  22. data/lib/puppet/data_providers/hiera_module_data_provider.rb +6 -0
  23. data/lib/puppet/data_providers/hiera_support.rb +6 -0
  24. data/lib/puppet/data_providers/json_data_provider_factory.rb +12 -0
  25. data/lib/puppet/data_providers/yaml_data_provider_factory.rb +12 -0
  26. data/lib/puppet/defaults.rb +25 -4
  27. data/lib/puppet/face/ca.rb +2 -0
  28. data/lib/puppet/face/certificate_request.rb +2 -0
  29. data/lib/puppet/face/certificate_revocation_list.rb +2 -0
  30. data/lib/puppet/face/file.rb +3 -0
  31. data/lib/puppet/face/help.rb +19 -17
  32. data/lib/puppet/face/help/face.erb +3 -0
  33. data/lib/puppet/face/key.rb +1 -0
  34. data/lib/puppet/face/man.rb +4 -2
  35. data/lib/puppet/face/module/generate.rb +1 -1
  36. data/lib/puppet/face/status.rb +2 -0
  37. data/lib/puppet/feature/base.rb +9 -2
  38. data/lib/puppet/feature/hocon.rb +3 -0
  39. data/lib/puppet/file_system.rb +15 -3
  40. data/lib/puppet/file_system/windows.rb +8 -0
  41. data/lib/puppet/forge.rb +6 -6
  42. data/lib/puppet/forge/repository.rb +1 -2
  43. data/lib/puppet/functions/binary_file.rb +4 -10
  44. data/lib/puppet/functions/hiera_array.rb +1 -1
  45. data/lib/puppet/functions/hiera_include.rb +1 -1
  46. data/lib/puppet/functions/hocon_data.rb +24 -0
  47. data/lib/puppet/functions/json_data.rb +18 -0
  48. data/lib/puppet/functions/yaml_data.rb +21 -0
  49. data/lib/puppet/generate/type.rb +1 -1
  50. data/lib/puppet/graph/simple_graph.rb +4 -2
  51. data/lib/puppet/indirector/file_bucket_file/file.rb +10 -2
  52. data/lib/puppet/indirector/request.rb +5 -1
  53. data/lib/puppet/interface.rb +14 -2
  54. data/lib/puppet/interface/face_collection.rb +1 -1
  55. data/lib/puppet/module.rb +14 -2
  56. data/lib/puppet/module_tool.rb +4 -4
  57. data/lib/puppet/module_tool/applications/builder.rb +3 -2
  58. data/lib/puppet/module_tool/applications/installer.rb +14 -14
  59. data/lib/puppet/module_tool/applications/upgrader.rb +13 -13
  60. data/lib/puppet/module_tool/installed_modules.rb +7 -7
  61. data/lib/puppet/module_tool/local_tarball.rb +3 -3
  62. data/lib/puppet/module_tool/metadata.rb +1 -1
  63. data/lib/puppet/network/http/connection.rb +2 -0
  64. data/lib/puppet/network/http/webrick.rb +2 -1
  65. data/lib/puppet/parser/functions/hiera.rb +14 -0
  66. data/lib/puppet/parser/functions/hiera_array.rb +14 -0
  67. data/lib/puppet/parser/functions/hiera_hash.rb +14 -0
  68. data/lib/puppet/parser/functions/hiera_include.rb +14 -0
  69. data/lib/puppet/parser/scope.rb +14 -20
  70. data/lib/puppet/plugins/data_providers.rb +2 -0
  71. data/lib/puppet/plugins/data_providers/data_provider.rb +108 -17
  72. data/lib/puppet/plugins/data_providers/registry.rb +2 -36
  73. data/lib/puppet/pops.rb +6 -9
  74. data/lib/puppet/pops/adaptable.rb +0 -3
  75. data/lib/puppet/pops/binder/producers.rb +3 -3
  76. data/lib/puppet/pops/evaluator/access_operator.rb +4 -4
  77. data/lib/puppet/pops/evaluator/closure.rb +1 -1
  78. data/lib/puppet/pops/evaluator/compare_operator.rb +4 -4
  79. data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
  80. data/lib/puppet/pops/issues.rb +4 -0
  81. data/lib/puppet/pops/label_provider.rb +14 -0
  82. data/lib/puppet/pops/loader/loader_paths.rb +3 -1
  83. data/lib/puppet/pops/loader/module_loaders.rb +21 -7
  84. data/lib/puppet/pops/loader/typed_name.rb +0 -2
  85. data/lib/puppet/pops/loaders.rb +31 -12
  86. data/lib/puppet/pops/lookup.rb +4 -3
  87. data/lib/puppet/pops/lookup/configured_data_provider.rb +87 -0
  88. data/lib/puppet/pops/lookup/context.rb +121 -71
  89. data/lib/puppet/pops/lookup/data_adapter.rb +27 -0
  90. data/lib/puppet/pops/lookup/data_dig_function_provider.rb +55 -0
  91. data/lib/puppet/pops/lookup/data_hash_function_provider.rb +111 -0
  92. data/lib/puppet/pops/lookup/data_provider.rb +102 -0
  93. data/lib/puppet/pops/lookup/environment_data_provider.rb +27 -0
  94. data/lib/puppet/pops/lookup/explainer.rb +122 -82
  95. data/lib/puppet/pops/lookup/function_provider.rb +82 -0
  96. data/lib/puppet/pops/lookup/global_data_provider.rb +49 -0
  97. data/lib/puppet/pops/lookup/hiera_config.rb +601 -0
  98. data/lib/puppet/pops/lookup/interpolation.rb +56 -35
  99. data/lib/puppet/pops/lookup/invocation.rb +179 -101
  100. data/lib/puppet/pops/lookup/location_resolver.rb +72 -0
  101. data/lib/puppet/pops/lookup/lookup_adapter.rb +451 -0
  102. data/lib/puppet/pops/lookup/lookup_key.rb +99 -0
  103. data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +119 -0
  104. data/lib/puppet/pops/lookup/module_data_provider.rb +58 -0
  105. data/lib/puppet/pops/lookup/sub_lookup.rb +8 -4
  106. data/lib/puppet/pops/merge_strategy.rb +120 -39
  107. data/lib/puppet/pops/parser/egrammar.ra +2 -0
  108. data/lib/puppet/pops/parser/eparser.rb +816 -808
  109. data/lib/puppet/pops/parser/locator.rb +3 -3
  110. data/lib/puppet/pops/parser/slurp_support.rb +4 -3
  111. data/lib/puppet/pops/pcore.rb +21 -12
  112. data/lib/puppet/pops/serialization/abstract_reader.rb +17 -7
  113. data/lib/puppet/pops/serialization/abstract_writer.rb +27 -12
  114. data/lib/puppet/pops/serialization/deserializer.rb +17 -4
  115. data/lib/puppet/pops/serialization/extension.rb +37 -8
  116. data/lib/puppet/pops/serialization/object.rb +14 -6
  117. data/lib/puppet/pops/serialization/rgen.rb +2 -1
  118. data/lib/puppet/pops/serialization/serializer.rb +30 -7
  119. data/lib/puppet/pops/types/implementation_registry.rb +1 -1
  120. data/lib/puppet/pops/types/p_object_type.rb +55 -12
  121. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +27 -27
  122. data/lib/puppet/pops/types/p_sem_ver_type.rb +12 -12
  123. data/lib/puppet/pops/types/p_timespan_type.rb +6 -6
  124. data/lib/puppet/pops/types/p_timestamp_type.rb +2 -2
  125. data/lib/puppet/pops/types/p_type_set_type.rb +7 -16
  126. data/lib/puppet/pops/types/recursion_guard.rb +64 -20
  127. data/lib/puppet/pops/types/ruby_generator.rb +10 -0
  128. data/lib/puppet/pops/types/type_calculator.rb +23 -13
  129. data/lib/puppet/pops/types/type_factory.rb +20 -9
  130. data/lib/puppet/pops/types/type_formatter.rb +37 -17
  131. data/lib/puppet/pops/types/type_mismatch_describer.rb +7 -6
  132. data/lib/puppet/pops/types/type_parser.rb +6 -0
  133. data/lib/puppet/pops/types/types.rb +225 -132
  134. data/lib/puppet/pops/validation.rb +1 -1
  135. data/lib/puppet/pops/validation/checker4_0.rb +12 -2
  136. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  137. data/lib/puppet/pops/visitor.rb +4 -3
  138. data/lib/puppet/provider/mcx/mcxcontent.rb +2 -1
  139. data/lib/puppet/provider/nameservice.rb +15 -0
  140. data/lib/puppet/provider/package/appdmg.rb +1 -1
  141. data/lib/puppet/provider/package/dnf.rb +1 -1
  142. data/lib/puppet/provider/package/pkg.rb +1 -1
  143. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  144. data/lib/puppet/provider/package/pkgng.rb +1 -1
  145. data/lib/puppet/provider/package/rpm.rb +2 -2
  146. data/lib/puppet/provider/service/smf.rb +3 -3
  147. data/lib/puppet/provider/service/systemd.rb +5 -1
  148. data/lib/puppet/provider/user/directoryservice.rb +1 -0
  149. data/lib/puppet/provider/user/user_role_add.rb +15 -0
  150. data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
  151. data/lib/puppet/provider/zone/solaris.rb +4 -1
  152. data/lib/puppet/reference/indirection.rb +1 -1
  153. data/lib/puppet/resource.rb +2 -3
  154. data/lib/puppet/resource/catalog.rb +12 -4
  155. data/lib/puppet/resource/type.rb +3 -3
  156. data/lib/puppet/settings.rb +1 -1
  157. data/lib/puppet/settings/config_file.rb +2 -1
  158. data/lib/puppet/settings/directory_setting.rb +6 -0
  159. data/lib/puppet/settings/environment_conf.rb +6 -2
  160. data/lib/puppet/settings/file_or_directory_setting.rb +6 -0
  161. data/lib/puppet/settings/file_setting.rb +10 -0
  162. data/lib/puppet/ssl/certificate_authority.rb +13 -2
  163. data/lib/puppet/ssl/host.rb +23 -1
  164. data/lib/puppet/transaction/additional_resource_generator.rb +7 -0
  165. data/lib/puppet/type/user.rb +16 -3
  166. data/lib/puppet/util.rb +1 -0
  167. data/lib/puppet/util/execution.rb +3 -3
  168. data/lib/puppet/util/filetype.rb +11 -5
  169. data/lib/puppet/util/logging.rb +2 -1
  170. data/lib/puppet/util/network_device/config.rb +1 -1
  171. data/lib/puppet/util/plist.rb +6 -0
  172. data/lib/puppet/util/profiler/aggregate.rb +1 -1
  173. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +2 -2
  174. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +2 -1
  175. data/lib/puppet/util/windows/adsi.rb +15 -12
  176. data/lib/puppet/vendor/load_semantic_puppet.rb +1 -0
  177. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +2 -1
  178. data/lib/puppet/vendor/require_vendored.rb +0 -1
  179. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +17 -0
  180. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency.rb +7 -7
  181. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph.rb +2 -2
  182. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph_node.rb +2 -2
  183. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/module_release.rb +58 -0
  184. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/source.rb +2 -2
  185. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/unsatisfiable_graph.rb +2 -2
  186. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +3 -0
  187. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/locales/config.yaml +21 -0
  188. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version.rb +48 -21
  189. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version_range.rb +15 -17
  190. data/lib/puppet/version.rb +1 -1
  191. data/lib/semver.rb +19 -12
  192. data/locales/config.yaml +29 -0
  193. data/locales/puppet.pot +79 -0
  194. data/man/man5/puppet.conf.5 +1 -1
  195. data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/{data.pp → environment/data.pp} +0 -0
  196. data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +2 -0
  197. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +1 -1
  198. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/hiera.yaml +5 -0
  199. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet/bindings/backend/default.rb +9 -0
  200. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet_x/backend/special_data_provider_factory.rb +23 -0
  201. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/manifests/init.pp +5 -0
  202. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/metadata.json +9 -0
  203. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +1 -0
  204. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/manifests/init.pp +1 -1
  205. data/spec/fixtures/unit/functions/lookup/data/common.yaml +19 -0
  206. data/spec/fixtures/unit/functions/lookup_fixture/data/common.yaml +19 -0
  207. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/environment.conf +0 -0
  208. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/lib/puppet/functions/environment/data.rb +0 -0
  209. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -0
  210. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -0
  211. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/manifests/init.pp +0 -0
  212. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/bindings/bad_data/default.rb +0 -0
  213. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +0 -0
  214. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/manifests/init.pp +0 -0
  215. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/bindings/bca/default.rb +0 -0
  216. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/functions/bca/data.rb +0 -0
  217. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/manifests/init.pp +0 -0
  218. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/data/empty.json +0 -0
  219. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/hiera.yaml +0 -0
  220. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/manifests/init.pp +0 -0
  221. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/metadata.json +0 -0
  222. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/data/empty_key.json +0 -0
  223. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/hiera.yaml +0 -0
  224. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/manifests/init.pp +0 -0
  225. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/metadata.json +0 -0
  226. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/data/empty_key.yaml +0 -0
  227. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/hiera.yaml +0 -0
  228. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/manifests/init.pp +0 -0
  229. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/metadata.json +0 -0
  230. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/data/empty.yaml +0 -0
  231. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/hiera.yaml +0 -0
  232. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/manifests/init.pp +0 -0
  233. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/metadata.json +0 -0
  234. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/data/first.json +0 -0
  235. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/hiera.yaml +0 -0
  236. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/manifests/init.pp +0 -0
  237. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/metadata.json +0 -0
  238. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +0 -0
  239. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/manifests/init.pp +0 -0
  240. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/metadata.json +0 -0
  241. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +0 -0
  242. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +0 -0
  243. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/manifests/init.pp +0 -0
  244. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/metadata.json +0 -0
  245. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/no_provider/manifests/init.pp +0 -0
  246. data/spec/integration/application/apply_spec.rb +88 -2
  247. data/spec/integration/application/lookup_spec.rb +155 -0
  248. data/spec/integration/data_binding_spec.rb +5 -5
  249. data/spec/integration/defaults_spec.rb +13 -0
  250. data/spec/integration/environments/default_manifest_spec.rb +16 -16
  251. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  252. data/spec/integration/test/test_helper_spec.rb +6 -2
  253. data/spec/integration/transaction_spec.rb +74 -0
  254. data/spec/integration/util/execution_spec.rb +8 -0
  255. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
  256. data/spec/lib/puppet_spec/module_tool/stub_source.rb +1 -1
  257. data/spec/lib/puppet_spec/unindent.rb +2 -2
  258. data/spec/unit/application/face_base_spec.rb +16 -0
  259. data/spec/unit/application/lookup_spec.rb +262 -227
  260. data/spec/unit/data_providers/{sample_data_provider_spec.rb → custom_data_provider_spec.rb} +14 -16
  261. data/spec/unit/data_providers/function_data_provider_spec.rb +2 -2
  262. data/spec/unit/data_providers/hiera_data_provider_spec.rb +60 -97
  263. data/spec/unit/defaults_spec.rb +1 -1
  264. data/spec/unit/face/ca_spec.rb +10 -0
  265. data/spec/unit/face/certificate_request_spec.rb +10 -0
  266. data/spec/unit/face/certificate_revocation_list_spec.rb +10 -0
  267. data/spec/unit/face/file_spec.rb +4 -0
  268. data/spec/unit/face/help_spec.rb +17 -0
  269. data/spec/unit/face/key_spec.rb +10 -0
  270. data/spec/unit/face/status_spec.rb +10 -0
  271. data/spec/unit/file_system_spec.rb +143 -6
  272. data/spec/unit/functions/binary_file_spec.rb +1 -1
  273. data/spec/unit/functions/hiera_spec.rb +257 -47
  274. data/spec/unit/functions/lookup_fixture_spec.rb +693 -0
  275. data/spec/unit/functions/lookup_spec.rb +1319 -608
  276. data/spec/unit/functions/new_spec.rb +3 -3
  277. data/spec/unit/graph/rb_tree_map_spec.rb +1 -1
  278. data/spec/unit/graph/simple_graph_spec.rb +1 -1
  279. data/spec/unit/hiera/scope_spec.rb +4 -4
  280. data/spec/unit/indirector/request_spec.rb +9 -0
  281. data/spec/unit/interface_spec.rb +27 -0
  282. data/spec/unit/man_spec.rb +1 -1
  283. data/spec/unit/module_spec.rb +1 -1
  284. data/spec/unit/module_tool/applications/builder_spec.rb +16 -1
  285. data/spec/unit/module_tool/applications/installer_spec.rb +1 -1
  286. data/spec/unit/module_tool/applications/upgrader_spec.rb +1 -1
  287. data/spec/unit/module_tool/installed_modules_spec.rb +6 -6
  288. data/spec/unit/module_tool_spec.rb +3 -3
  289. data/spec/unit/network/http/connection_spec.rb +10 -0
  290. data/spec/unit/network/http/webrick_spec.rb +1 -1
  291. data/spec/unit/pops/evaluator/access_ops_spec.rb +2 -2
  292. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +9 -9
  293. data/spec/unit/pops/loaders/environment_loader_spec.rb +172 -0
  294. data/spec/unit/pops/lookup/context_spec.rb +45 -16
  295. data/spec/unit/pops/lookup/interpolation_spec.rb +28 -20
  296. data/spec/unit/pops/lookup/lookup_spec.rb +197 -0
  297. data/spec/unit/pops/merge_strategy_spec.rb +18 -0
  298. data/spec/unit/pops/parser/lexer2_spec.rb +16 -1
  299. data/spec/unit/pops/parser/parse_site_spec.rb +4 -0
  300. data/spec/unit/pops/serialization/packer_spec.rb +4 -23
  301. data/spec/unit/pops/serialization/serialization_spec.rb +32 -8
  302. data/spec/unit/pops/types/p_object_type_spec.rb +68 -3
  303. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +4 -4
  304. data/spec/unit/pops/types/p_type_set_type_spec.rb +31 -2
  305. data/spec/unit/pops/types/type_acceptor_spec.rb +18 -17
  306. data/spec/unit/pops/types/type_calculator_spec.rb +39 -40
  307. data/spec/unit/pops/types/type_factory_spec.rb +3 -3
  308. data/spec/unit/pops/types/type_formatter_spec.rb +7 -3
  309. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +13 -2
  310. data/spec/unit/pops/types/types_spec.rb +25 -2
  311. data/spec/unit/pops/validator/validator_spec.rb +60 -4
  312. data/spec/unit/provider/nameservice_spec.rb +42 -0
  313. data/spec/unit/provider/package/aptrpm_spec.rb +1 -1
  314. data/spec/unit/provider/package/pkg_spec.rb +22 -0
  315. data/spec/unit/provider/package/pkgng_spec.rb +12 -0
  316. data/spec/unit/provider/package/rpm_spec.rb +8 -8
  317. data/spec/unit/provider/service/smf_spec.rb +13 -11
  318. data/spec/unit/provider/service/systemd_spec.rb +8 -1
  319. data/spec/unit/provider/user/useradd_spec.rb +1 -0
  320. data/spec/unit/puppet_spec.rb +14 -0
  321. data/spec/unit/resource/catalog_spec.rb +15 -9
  322. data/spec/unit/resource_spec.rb +20 -17
  323. data/spec/unit/semver_spec.rb +14 -0
  324. data/spec/unit/ssl/certificate_authority_spec.rb +12 -1
  325. data/spec/unit/transaction/additional_resource_generator_spec.rb +11 -0
  326. data/spec/unit/type/user_spec.rb +32 -6
  327. data/spec/unit/util/filetype_spec.rb +3 -3
  328. data/spec/unit/util/yaml_spec.rb +1 -1
  329. data/spec/unit/util_spec.rb +10 -2
  330. data/tasks/i18n.rake +20 -0
  331. metadata +2661 -2607
  332. data/lib/puppet/data_providers/lookup_adapter.rb +0 -254
  333. data/lib/puppet/vendor/load_semantic.rb +0 -1
  334. data/lib/puppet/vendor/semantic/Gemfile +0 -20
  335. data/lib/puppet/vendor/semantic/PUPPET_README.md +0 -6
  336. data/lib/puppet/vendor/semantic/Rakefile +0 -69
  337. data/lib/puppet/vendor/semantic/lib/semantic.rb +0 -7
  338. data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +0 -60
  339. data/lib/puppet/vendor/semantic/spec/spec_helper.rb +0 -24
  340. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_node_spec.rb +0 -141
  341. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_spec.rb +0 -162
  342. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/module_release_spec.rb +0 -143
  343. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/source_spec.rb +0 -5
  344. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/unsatisfiable_graph_spec.rb +0 -44
  345. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency_spec.rb +0 -383
  346. data/lib/puppet/vendor/semantic/spec/unit/semantic/version_range_spec.rb +0 -307
  347. data/lib/puppet/vendor/semantic/spec/unit/semantic/version_spec.rb +0 -608
  348. data/spec/fixtures/unit/data_providers/environments/sample/manifests/site.pp +0 -6
@@ -0,0 +1,79 @@
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) 2017 Puppet, Inc.
3
+ # This file is distributed under the same license as the Puppet automation framework package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
5
+ #
6
+ #, fuzzy
7
+ msgid ""
8
+ msgstr ""
9
+ "Project-Id-Version: Puppet automation framework 4.8.2-338-g562b302\n"
10
+ "\n"
11
+ "Report-Msgid-Bugs-To: https://tickets.puppetlabs.com\n"
12
+ "POT-Creation-Date: 2017-01-25 09:32-0800\n"
13
+ "PO-Revision-Date: 2017-01-25 09:32-0800\n"
14
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
15
+ "Language-Team: LANGUAGE <LL@li.org>\n"
16
+ "Language: \n"
17
+ "MIME-Version: 1.0\n"
18
+ "Content-Type: text/plain; charset=UTF-8\n"
19
+ "Content-Transfer-Encoding: 8bit\n"
20
+ "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
21
+
22
+ msgid "Apache 2 license; see COPYING"
23
+ msgstr ""
24
+
25
+ msgid "Display Puppet help."
26
+ msgstr ""
27
+
28
+ msgid "Display help about Puppet subcommands and their actions."
29
+ msgstr ""
30
+
31
+ msgid "[<subcommand>] [<action>]"
32
+ msgstr ""
33
+
34
+ msgid "Short help text for the specified subcommand or action."
35
+ msgstr ""
36
+
37
+ msgid ""
38
+ " Get help for an action:\n"
39
+ "\n"
40
+ " $ puppet help\n"
41
+ msgstr ""
42
+
43
+ msgid "--version VERSION"
44
+ msgstr ""
45
+
46
+ msgid "The version of the subcommand for which to show help."
47
+ msgstr ""
48
+
49
+ msgid "Puppet help only takes two (optional) arguments: a subcommand and an action"
50
+ msgstr ""
51
+
52
+ msgid "Version only makes sense when a Faces subcommand is given"
53
+ msgstr ""
54
+
55
+ msgid "Legacy subcommands don't take actions"
56
+ msgstr ""
57
+
58
+ msgid ""
59
+ "Could not load help for the application #{applicationname}.\n"
60
+ "Please check the error logs for more information.\n"
61
+ "\n"
62
+ "Detail: \"#{detail.message}\"\n"
63
+ msgstr ""
64
+
65
+ msgid ""
66
+ "Could not load help for the face #{facename}.\n"
67
+ "Please check the error logs for more information.\n"
68
+ "\n"
69
+ "Detail: \"#{detail.message}\"\n"
70
+ msgstr ""
71
+
72
+ msgid "\"Unable to load action #{actionname} from #{face}\""
73
+ msgstr ""
74
+
75
+ msgid " (Deprecated)"
76
+ msgstr ""
77
+
78
+ msgid "! Subcommand unavailable due to error. Check error logs."
79
+ msgstr ""
@@ -1285,7 +1285,7 @@ Where to retrieve external facts for pluginsync
1285
1285
  What files to ignore when pulling down plugins\.
1286
1286
  .
1287
1287
  .IP "\(bu" 4
1288
- \fIDefault\fR: \.svn CVS \.git
1288
+ \fIDefault\fR: \.svn CVS \.git \.hg
1289
1289
  .
1290
1290
  .IP "" 0
1291
1291
  .
@@ -44,3 +44,5 @@ recursive: '%{r1}'
44
44
  km_qualified: "Value from qualified interpolation OS = %{os.name}"
45
45
 
46
46
  km_multi: "cluster/%{literal('%')}{::cluster}/%{literal('%')}{role}"
47
+
48
+ domain: "-- %{domain} --"
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  lookup_options:
3
- roles::devco::packages:
3
+ two::arg:
4
4
  merge: unique
@@ -0,0 +1,5 @@
1
+ ---
2
+ :version: 4
3
+ :hierarchy:
4
+ - :name: "Other"
5
+ :backend: special
@@ -0,0 +1,9 @@
1
+ Puppet::Bindings.newbindings('backend::default') do
2
+ # In the default bindings for this module
3
+ bind {
4
+ # bind its name to the 'puppet' environment data provider
5
+ name 'special'
6
+ in_multibind "puppet::path_based_data_provider_factories"
7
+ to_instance "PuppetX::Backend::SpecialDataProviderFactory"
8
+ }
9
+ end
@@ -0,0 +1,23 @@
1
+ module PuppetX::Backend
2
+ class SpecialDataProviderFactory < Puppet::Plugins::DataProviders::PathBasedDataProviderFactory
3
+ def create(name, paths, parent_data_provider)
4
+ SpecialDataProvider.new(name, paths)
5
+ end
6
+
7
+ def resolve_paths(datadir, declared_paths, paths, lookup_invocation)
8
+ paths
9
+ end
10
+ end
11
+
12
+ class SpecialDataProvider < Puppet::Plugins::DataProviders::PathBasedDataProvider
13
+ def unchecked_lookup(key, lookup_invocation, merge)
14
+ value = {
15
+ 'backend::test::param_a' => 'module data param_a is 1000',
16
+ 'backend::test::param_b' => 'module data param_b is 2000',
17
+ }[key]
18
+ throw :no_such_key if value.nil?
19
+ value
20
+ end
21
+ end
22
+ end
23
+
@@ -0,0 +1,5 @@
1
+ class backend {
2
+ class test($param_a = 1, $param_b = 2, $param_c = 3) {
3
+ notice("$param_a, $param_b, $param_c")
4
+ }
5
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "example/one",
3
+ "version": "0.0.2",
4
+ "source": "git@github.com/example/example-one.git",
5
+ "dependencies": [],
6
+ "author": "Bob the Builder",
7
+ "license": "Apache-2.0",
8
+ "data_provider": "hiera"
9
+ }
@@ -19,6 +19,7 @@ module PuppetX::Helindbe
19
19
  'test::param_a' => 'env data param_a is 10',
20
20
  'test::param_b' => 'env data param_b is 20',
21
21
  # demo: this overrides a parameter for a class in the dataprovider module
22
+ 'backend::test::param_c' => 'env data param_c is 3000',
22
23
  'dataprovider::test::param_c' => 'env data param_c is 300',
23
24
  }
24
25
  end
@@ -1,5 +1,5 @@
1
1
  class dataprovider {
2
2
  class test($param_a = 1, $param_b = 2, $param_c = 3) {
3
- notify { "$param_a, $param_b, $param_c": }
3
+ notice("$param_a, $param_b, $param_c")
4
4
  }
5
5
  }
@@ -0,0 +1,19 @@
1
+ ---
2
+ abc::a: global_a
3
+ abc::c:
4
+ - global_c
5
+
6
+ abc::e:
7
+ k1: global_e1
8
+
9
+ abc::f:
10
+ k1:
11
+ s1: global_f11
12
+ k2:
13
+ s3: global_f23
14
+
15
+ bca::e:
16
+ k1: global_e1
17
+
18
+ no_provider::e:
19
+ k1: global_e1
@@ -0,0 +1,19 @@
1
+ ---
2
+ abc::a: global_a
3
+ abc::c:
4
+ - global_c
5
+
6
+ abc::e:
7
+ k1: global_e1
8
+
9
+ abc::f:
10
+ k1:
11
+ s1: global_f11
12
+ k2:
13
+ s3: global_f23
14
+
15
+ bca::e:
16
+ k1: global_e1
17
+
18
+ no_provider::e:
19
+ k1: global_e1
@@ -134,6 +134,92 @@ end
134
134
  end
135
135
  end
136
136
 
137
+ context 'from environment with pcore object types' do
138
+ include PuppetSpec::Compiler
139
+
140
+ let!(:envdir) { Puppet[:environmentpath] }
141
+ let(:env_name) { 'spec' }
142
+ let(:dir_structure) {
143
+ {
144
+ 'environment.conf' => <<-CONF,
145
+ rich_data = true
146
+ CONF
147
+ 'modules' => {
148
+ 'mod' => {
149
+ 'types' => {
150
+ 'streetaddress.pp' => <<-PUPPET,
151
+ type Mod::StreetAddress = Object[{
152
+ attributes => {
153
+ 'street' => String,
154
+ 'zipcode' => String,
155
+ 'city' => String,
156
+ }
157
+ }]
158
+ PUPPET
159
+ 'address.pp' => <<-PUPPET,
160
+ type Mod::Address = Object[{
161
+ parent => Mod::StreetAddress,
162
+ attributes => {
163
+ 'state' => String
164
+ }
165
+ }]
166
+ PUPPET
167
+ 'contact.pp' => <<-PUPPET,
168
+ type Mod::Contact = Object[{
169
+ attributes => {
170
+ 'address' => Mod::Address,
171
+ 'email' => String
172
+ }
173
+ }]
174
+ PUPPET
175
+ },
176
+ 'manifests' => {
177
+ 'init.pp' => <<-PUPPET,
178
+ define mod::person(Mod::Contact $contact) {
179
+ notify { $title: }
180
+ notify { $contact.address.street: }
181
+ notify { $contact.address.zipcode: }
182
+ notify { $contact.address.city: }
183
+ notify { $contact.address.state: }
184
+ }
185
+
186
+ class mod {
187
+ mod::person { 'Test Person':
188
+ contact => Mod::Contact(
189
+ Mod::Address('The Street 23', '12345', 'Some City', 'A State'),
190
+ 'test@example.com')
191
+ }
192
+ }
193
+ PUPPET
194
+ }
195
+ }
196
+ }
197
+ }
198
+ }
199
+
200
+ let(:env) { Puppet::Node::Environment.create(env_name.to_sym, [File.join(envdir, env_name, 'modules')]) }
201
+ let(:node) { Puppet::Node.new('test', :environment => env) }
202
+
203
+ before(:each) do
204
+ dir_contained_in(envdir, env_name => dir_structure)
205
+ PuppetSpec::Files.record_tmp(File.join(envdir, env_name))
206
+ end
207
+
208
+ it 'can compile the catalog' do
209
+ compile_to_catalog('include mod', node)
210
+ end
211
+
212
+ it 'can apply the catalog' do
213
+ catalog = compile_to_catalog('include mod', node)
214
+
215
+ Puppet[:environment] = env_name
216
+ apply = Puppet::Application[:apply]
217
+ apply.options[:catalog] = file_containing('manifest', catalog.to_pson)
218
+ expect { apply.run_command; exit(0) }.to exit_with(0)
219
+ expect(@logs.map(&:to_s)).to include('The Street 23')
220
+ end
221
+ end
222
+
137
223
  it "applies a given file even when a directory environment is specified" do
138
224
  manifest = file_containing("manifest.pp", "notice('it was applied')")
139
225
 
@@ -414,8 +500,8 @@ class amod::bad_type {
414
500
  apply.expects(:apply_catalog).with do |catalog|
415
501
  catalog.resource(:notify, 'rx')['message'].is_a?(Regexp)
416
502
  catalog.resource(:notify, 'bin')['message'].is_a?(Puppet::Pops::Types::PBinaryType::Binary)
417
- catalog.resource(:notify, 'ver')['message'].is_a?(Semantic::Version)
418
- catalog.resource(:notify, 'vrange')['message'].is_a?(Semantic::VersionRange)
503
+ catalog.resource(:notify, 'ver')['message'].is_a?(SemanticPuppet::Version)
504
+ catalog.resource(:notify, 'vrange')['message'].is_a?(SemanticPuppet::VersionRange)
419
505
  catalog.resource(:notify, 'tspan')['message'].is_a?(Puppet::Pops::Time::Timespan)
420
506
  catalog.resource(:notify, 'tstamp')['message'].is_a?(Puppet::Pops::Time::Timestamp)
421
507
  end
@@ -0,0 +1,155 @@
1
+ require 'spec_helper'
2
+ require 'puppet_spec/files'
3
+ require 'puppet_spec/compiler'
4
+ require 'deep_merge/core'
5
+
6
+ describe 'lookup' do
7
+ include PuppetSpec::Files
8
+
9
+ context 'with an environment' do
10
+ let(:env_name) { 'spec' }
11
+ let(:env_dir) { tmpdir('environments') }
12
+ let(:environment_files) do
13
+ {
14
+ env_name => {
15
+ 'modules' => {},
16
+ 'hiera.yaml' => <<-YAML.unindent,
17
+ ---
18
+ version: 5
19
+ hierarchy:
20
+ - name: "Common"
21
+ data_hash: yaml_data
22
+ path: "common.yaml"
23
+ YAML
24
+ 'data' => {
25
+ 'common.yaml' => <<-YAML.unindent
26
+ ---
27
+ a: value a
28
+ mod_a::a: value mod_a::a (from environment)
29
+ mod_a::hash_a:
30
+ a: value mod_a::hash_a.a (from environment)
31
+ mod_a::hash_b:
32
+ a: value mod_a::hash_b.a (from environment)
33
+ lookup_options:
34
+ mod_a::hash_b:
35
+ merge: hash
36
+ YAML
37
+ }
38
+ },
39
+ 'someother' => {
40
+ }
41
+ }
42
+ end
43
+
44
+ let(:app) { Puppet::Application[:lookup] }
45
+ let(:env) { Puppet::Node::Environment.create(env_name.to_sym, [File.join(populated_env_dir, env_name, 'modules')]) }
46
+ let(:environments) { Puppet::Environments::Directories.new(populated_env_dir, []) }
47
+
48
+ let(:populated_env_dir) do
49
+ dir_contained_in(env_dir, environment_files)
50
+ env_dir
51
+ end
52
+
53
+ def lookup(key, options = {}, explain = false)
54
+ key = [key] unless key.is_a?(Array)
55
+ app.command_line.stubs(:args).returns(key)
56
+ if explain
57
+ app.options[:explain] = true
58
+ app.options[:render_as] = :s
59
+ else
60
+ app.options[:render_as] = :json
61
+ end
62
+ options.each_pair { |k, v| app.options[k] = v }
63
+ capture = StringIO.new
64
+ saved_stdout = $stdout
65
+ begin
66
+ $stdout = capture
67
+ expect { app.run_command }.to exit_with(0)
68
+ ensure
69
+ $stdout = saved_stdout
70
+ end
71
+ out = capture.string.strip
72
+ if explain
73
+ out
74
+ else
75
+ out.empty? ? nil : JSON.parse("[#{out}]")[0]
76
+ end
77
+ end
78
+
79
+ def explain(key, options = {})
80
+ lookup(key, options, true)
81
+ end
82
+
83
+ around(:each) do |example|
84
+ Puppet.override(:environments => environments, :current_environment => env) do
85
+ example.run
86
+ end
87
+ end
88
+
89
+ it 'finds data in the environment' do
90
+ expect(lookup('a')).to eql('value a')
91
+ end
92
+
93
+ context 'configured with the wrong environment' do
94
+ let(:env) { Puppet::Node::Environment.create(env_name.to_sym, [File.join(populated_env_dir, env_name, 'modules')]) }
95
+ it 'does not find data in non-existing environment' do
96
+ Puppet.override(:environments => environments, :current_environment => 'someother') do
97
+ expect(lookup('a', {}, true)).to match(/did not find a value for the name 'a'/)
98
+ end
99
+ end
100
+ end
101
+
102
+ context 'and a module' do
103
+ let(:mod_a_files) do
104
+ {
105
+ 'mod_a' => {
106
+ 'data' => {
107
+ 'common.yaml' => <<-YAML.unindent
108
+ ---
109
+ mod_a::a: value mod_a::a (from mod_a)
110
+ mod_a::b: value mod_a::b (from mod_a)
111
+ mod_a::hash_a:
112
+ a: value mod_a::hash_a.a (from mod_a)
113
+ b: value mod_a::hash_a.b (from mod_a)
114
+ mod_a::hash_b:
115
+ a: value mod_a::hash_b.a (from mod_a)
116
+ b: value mod_a::hash_b.b (from mod_a)
117
+ mod_a::interpolated: "-- %{lookup('mod_a::a')} --"
118
+ mod_a::a_a: "-- %{lookup('mod_a::hash_a.a')} --"
119
+ mod_a::a_b: "-- %{lookup('mod_a::hash_a.b')} --"
120
+ mod_a::b_a: "-- %{lookup('mod_a::hash_b.a')} --"
121
+ mod_a::b_b: "-- %{lookup('mod_a::hash_b.b')} --"
122
+ 'mod_a::a.quoted.key': 'value mod_a::a.quoted.key (from mod_a)'
123
+ YAML
124
+ },
125
+ 'hiera.yaml' => <<-YAML.unindent,
126
+ ---
127
+ version: 5
128
+ hierarchy:
129
+ - name: "Common"
130
+ data_hash: yaml_data
131
+ path: "common.yaml"
132
+ YAML
133
+ }
134
+ }
135
+ end
136
+
137
+ let(:populated_env_dir) do
138
+ dir_contained_in(env_dir, DeepMerge.deep_merge!(environment_files, env_name => { 'modules' => mod_a_files }))
139
+ env_dir
140
+ end
141
+
142
+ it 'finds data in the module' do
143
+ expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
144
+ end
145
+
146
+ it 'finds quoted keys in the module' do
147
+ expect(lookup('"mod_a::a.quoted.key"')).to eql('value mod_a::a.quoted.key (from mod_a)')
148
+ end
149
+
150
+ it 'merges hashes from environment and module when merge strategy hash is used' do
151
+ expect(lookup('mod_a::hash_a', :merge => 'hash')).to eql({'a' => 'value mod_a::hash_a.a (from environment)', 'b' => 'value mod_a::hash_a.b (from mod_a)'})
152
+ end
153
+ end
154
+ end
155
+ end