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
@@ -273,7 +273,7 @@ module Validation
273
273
  #
274
274
  class DiagnosticFormatter
275
275
  def format diagnostic
276
- "#{loc(diagnostic)} #{format_severity(diagnostic)}#{format_message(diagnostic)}"
276
+ "#{format_location(diagnostic)} #{format_severity(diagnostic)}#{format_message(diagnostic)}"
277
277
  end
278
278
 
279
279
  def format_message diagnostic
@@ -295,8 +295,12 @@ class Checker4_0 < Evaluator::LiteralEvaluator
295
295
 
296
296
  def check_CaseExpression(o)
297
297
  rvalue(o.test)
298
- # There should only be one LiteralDefault case option value
299
- # TODO: Implement this check
298
+ # There can only be one LiteralDefault case option value
299
+ defaults = o.options.values.select {|v| v.is_a?(Model::LiteralDefault) }
300
+ unless defaults.size <= 1
301
+ # Flag the second default as 'unreachable'
302
+ acceptor.accept(Issues::DUPLICATE_DEFAULT, defaults[1], :container => o)
303
+ end
300
304
  end
301
305
 
302
306
  def check_CaseOption(o)
@@ -659,6 +663,12 @@ class Checker4_0 < Evaluator::LiteralEvaluator
659
663
 
660
664
  def check_SelectorExpression(o)
661
665
  rvalue(o.left_expr)
666
+ # There can only be one LiteralDefault case option value
667
+ defaults = o.selectors.select {|v| v.matching_expr.is_a?(Model::LiteralDefault) }
668
+ unless defaults.size <= 1
669
+ # Flag the second default as 'unreachable'
670
+ acceptor.accept(Issues::DUPLICATE_DEFAULT, defaults[1].matching_expr, :container => o)
671
+ end
662
672
  end
663
673
 
664
674
  def check_SelectorEntry(o)
@@ -28,6 +28,7 @@ class ValidatorFactory_4_0 < Factory
28
28
  p[Issues::FUTURE_RESERVED_WORD] = :deprecation
29
29
 
30
30
  p[Issues::DUPLICATE_KEY] = Puppet[:strict] == :off ? :ignore : Puppet[:strict]
31
+ p[Issues::DUPLICATE_DEFAULT] = Puppet[:strict] == :off ? :ignore : Puppet[:strict]
31
32
  p[Issues::NAME_WITH_HYPHEN] = :error
32
33
  p[Issues::EMPTY_RESOURCE_SPECIALIZATION] = :ignore
33
34
  p
@@ -1,3 +1,4 @@
1
+ module Puppet::Pops
1
2
  # A Visitor performs delegation to a given receiver based on the configuration of the Visitor.
2
3
  # A new visitor is created with a given receiver, a method prefix, min, and max argument counts.
3
4
  # e.g.
@@ -9,7 +10,7 @@
9
10
  # Raises RuntimeError if there are too few or too many arguments, or if the receiver is not
10
11
  # configured to handle a given visiting object.
11
12
  #
12
- class Puppet::Pops::Visitor
13
+ class Visitor
13
14
  attr_reader :receiver, :message, :min_args, :max_args, :cache
14
15
  def initialize(receiver, message, min_args=0, max_args=nil)
15
16
  raise ArgumentError.new("min_args must be >= 0") if min_args < 0
@@ -27,8 +28,7 @@ class Puppet::Pops::Visitor
27
28
  visit_this(@receiver, thing, args)
28
29
  end
29
30
 
30
- DOUBLE_COLON = '::'
31
- NO_ARGS = [].freeze
31
+ NO_ARGS = EMPTY_ARRAY
32
32
 
33
33
  # Visit an explicit receiver
34
34
  def visit_this(receiver, thing, args)
@@ -92,3 +92,4 @@ class Puppet::Pops::Visitor
92
92
  end
93
93
 
94
94
  end
95
+ end
@@ -116,7 +116,8 @@ Puppet::Type.type(:mcx).provide :mcxcontent, :parent => Puppet::Provider do
116
116
  dscl 'localhost', '-mcxdelete', ds_path
117
117
  end
118
118
 
119
- tmp = Tempfile.new('puppet_mcx')
119
+ # val being passed in is resource[:content] which should be UTF-8
120
+ tmp = Tempfile.new('puppet_mcx', :encoding => Encoding::UTF_8)
120
121
  begin
121
122
  tmp << val
122
123
  tmp.flush
@@ -288,5 +288,20 @@ class Puppet::Provider::NameService < Puppet::Provider
288
288
  raise Puppet::Error, "Could not set #{param} on #{@resource.class.name}[#{@resource.name}]: #{detail}", detail.backtrace
289
289
  end
290
290
  end
291
+
292
+ # From overriding Puppet::Property#insync? Ruby Etc::getpwnam < 2.1.0 always
293
+ # returns a struct with binary encoded string values, and >= 2.1.0 will return
294
+ # binary encoded strings for values incompatible with current locale charset,
295
+ # or Encoding.default_external if compatible. Compare a "should" value with
296
+ # encoding of "current" value, to avoid unnecessary property syncs and
297
+ # comparison of strings with different encodings. (PUP-6777)
298
+ #
299
+ # return basic string comparison after re-encoding (same as
300
+ # Puppet::Property#property_matches)
301
+ def comments_insync?(current, should)
302
+ # we're only doing comparison here so don't mutate the string
303
+ desired = should[0].to_s.dup
304
+ current == desired.force_encoding(current.encoding)
305
+ end
291
306
  end
292
307
 
@@ -44,7 +44,7 @@ Puppet::Type.type(:package).provide(:appdmg, :parent => Puppet::Provider::Packag
44
44
  def self.installapp(source, name, orig_source)
45
45
  appname = File.basename(source);
46
46
  ditto "--rsrc", source, "/Applications/#{appname}"
47
- File.open("/var/db/.puppet_appdmg_installed_#{name}", "w") do |t|
47
+ Puppet::FileSystem.open("/var/db/.puppet_appdmg_installed_#{name}", nil, "w:UTF-8") do |t|
48
48
  t.print "name: '#{name}'\n"
49
49
  t.print "source: '#{orig_source}'\n"
50
50
  end
@@ -28,7 +28,7 @@ Puppet::Type.type(:package).provide :dnf, :parent => :yum do
28
28
  end
29
29
  end
30
30
 
31
- defaultfor :operatingsystem => :fedora, :operatingsystemmajrelease => ['22', '23', '24']
31
+ defaultfor :operatingsystem => :fedora, :operatingsystemmajrelease => ['22', '23', '24', '25']
32
32
 
33
33
  def self.update_command
34
34
  # In DNF, update is deprecated for upgrade
@@ -23,7 +23,7 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d
23
23
 
24
24
  confine :osfamily => :solaris
25
25
 
26
- defaultfor :osfamily => :solaris, :kernelrelease => '5.11'
26
+ defaultfor :osfamily => :solaris, :kernelrelease => ['5.11', '5.12']
27
27
 
28
28
  def self.instances
29
29
  pkg(:list, '-Hv').split("\n").map{|l| new(parse_line(l))}
@@ -62,7 +62,7 @@ Puppet::Type.type(:package).provide :pkgdmg, :parent => Puppet::Provider::Packag
62
62
  def self.installpkg(source, name, orig_source)
63
63
  installer "-pkg", source, "-target", "/"
64
64
  # Non-zero exit status will throw an exception.
65
- File.open("/var/db/.puppet_pkgdmg_installed_#{name}", "w") do |t|
65
+ Puppet::FileSystem.open("/var/db/.puppet_pkgdmg_installed_#{name}", nil, "w:UTF-8") do |t|
66
66
  t.print "name: '#{name}'\n"
67
67
  t.print "source: '#{orig_source}'\n"
68
68
  end
@@ -56,7 +56,7 @@ Puppet::Type.type(:package).provide :pkgng, :parent => Puppet::Provider::Package
56
56
 
57
57
  return packages
58
58
  rescue Puppet::ExecutionFailure
59
- nil
59
+ return []
60
60
  end
61
61
  end
62
62
 
@@ -101,7 +101,7 @@ Puppet::Type.type(:package).provide :rpm, :source => :rpm, :parent => Puppet::Pr
101
101
  #NOTE: Prior to a fix for issue 1243, this method potentially returned a cached value
102
102
  #IF YOU CALL THIS METHOD, IT WILL CALL RPM
103
103
  #Use get(:property) to check if cached values are available
104
- cmd = ["-q", @resource[:name], "#{self.class.nosignature}", "#{self.class.nodigest}", "--qf", self.class::NEVRA_FORMAT]
104
+ cmd = ["-q", @resource[:name], "#{self.class.nosignature}", "#{self.class.nodigest}", "--qf", "'#{self.class::NEVRA_FORMAT}'"]
105
105
 
106
106
  begin
107
107
  output = rpm(*cmd)
@@ -131,7 +131,7 @@ Puppet::Type.type(:package).provide :rpm, :source => :rpm, :parent => Puppet::Pr
131
131
  @resource.fail "RPMs must specify a package source"
132
132
  end
133
133
 
134
- cmd = [command(:rpm), "-q", "--qf", self.class::NEVRA_FORMAT, "-p", source]
134
+ cmd = [command(:rpm), "-q", "--qf", "'#{self.class::NEVRA_FORMAT}'", "-p", source]
135
135
  h = self.class.nevra_to_hash(execfail(cmd, Puppet::Error))
136
136
  h[:ensure]
137
137
  end
@@ -80,7 +80,7 @@ Puppet::Type.type(:service).provide :smf, :parent => :base do
80
80
  when :maintenance, :degraded
81
81
  [command(:adm), :clear, @resource[:name]]
82
82
  else
83
- [command(:adm), :enable, "-s", @resource[:name]]
83
+ [command(:adm), :enable, "-rs", @resource[:name]]
84
84
  end
85
85
  end
86
86
 
@@ -135,8 +135,8 @@ Puppet::Type.type(:service).provide :smf, :parent => :base do
135
135
  states = service_states
136
136
  state = states[1] == "-" ? states[0] : states[1]
137
137
  rescue Puppet::ExecutionFailure
138
- info "Could not get status on service #{self.name}"
139
- return :stopped
138
+ debug "Could not get status on service #{self.name} #{$!}"
139
+ return :absent
140
140
  end
141
141
 
142
142
  case state
@@ -22,6 +22,7 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
22
22
  defaultfor :osfamily => :redhat, :operatingsystemmajrelease => "7"
23
23
  defaultfor :osfamily => :redhat, :operatingsystem => :fedora
24
24
  defaultfor :osfamily => :suse
25
+ defaultfor :osfamily => :coreos
25
26
  defaultfor :operatingsystem => :debian, :operatingsystemmajrelease => "8"
26
27
  defaultfor :operatingsystem => :ubuntu, :operatingsystemmajrelease => ["15.04","15.10","16.04","16.10"]
27
28
  defaultfor :operatingsystem => :cumuluslinux, :operatingsystemmajrelease => ["3"]
@@ -29,7 +30,7 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
29
30
  def self.instances
30
31
  i = []
31
32
  output = systemctl('list-unit-files', '--type', 'service', '--full', '--all', '--no-pager')
32
- output.scan(/^(\S+)\s+(disabled|enabled|masked)\s*$/i).each do |m|
33
+ output.scan(/^(\S+)\s+(disabled|enabled|masked|indirect)\s*$/i).each do |m|
33
34
  i << new(:name => m[0])
34
35
  end
35
36
  return i
@@ -82,6 +83,9 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
82
83
  # We only return :mask if we're trying to mask the service. This prevents
83
84
  # flapping when simply trying to disable a masked service.
84
85
  return :mask if (@resource[:enable] == :mask) && (output == 'masked')
86
+
87
+ # The indirect state indicates that the unit is not enabled.
88
+ return :false if output == 'indirect'
85
89
  return :true if (code == 0)
86
90
  if (output.empty?) && (code > 0) && (Facter.value(:osfamily).downcase == 'debian')
87
91
  ret = debian_enabled?
@@ -622,6 +622,7 @@ Puppet::Type.type(:user).provide :directoryservice do
622
622
 
623
623
  # This is a simple wrapper method for writing values to a file.
624
624
  def write_to_file(filename, value)
625
+ Puppet.deprecation_warning("Puppet::Type.type(:user).provider(:directoryservice).write_to_file is deprecated and will be removed in Puppet 5.")
625
626
  begin
626
627
  File.open(filename, 'w') { |f| f.write(value)}
627
628
  rescue Errno::EACCES => detail
@@ -12,6 +12,7 @@ Puppet::Type.type(:user).provide :user_role_add, :parent => :useradd, :source =>
12
12
  options :home, :flag => "-d", :method => :dir
13
13
  options :comment, :method => :gecos
14
14
  options :groups, :flag => "-G"
15
+ options :shell, :flag => "-s"
15
16
  options :roles, :flag => "-R"
16
17
  options :auths, :flag => "-A"
17
18
  options :profiles, :flag => "-P"
@@ -26,8 +27,22 @@ Puppet::Type.type(:user).provide :user_role_add, :parent => :useradd, :source =>
26
27
  value !~ /\s/
27
28
  end
28
29
 
30
+ def shell=(value)
31
+ check_valid_shell
32
+ set("shell", value)
33
+ end
34
+
29
35
  has_features :manages_homedir, :allows_duplicates, :manages_solaris_rbac, :manages_passwords, :manages_password_age, :manages_shell
30
36
 
37
+ def check_valid_shell
38
+ unless File.exists?(@resource.should(:shell))
39
+ raise(Puppet::Error, "Shell #{@resource.should(:shell)} must exist")
40
+ end
41
+ unless File.executable?(@resource.should(:shell).to_s)
42
+ raise(Puppet::Error, "Shell #{@resource.should(:shell)} must be executable")
43
+ end
44
+ end
45
+
31
46
  #must override this to hand the keyvalue pairs
32
47
  def add_properties
33
48
  cmd = []
@@ -4,7 +4,7 @@ Puppet::Type.type(:yumrepo).provide(:inifile) do
4
4
  desc <<-EOD
5
5
  Manage yum repo configurations by parsing yum INI configuration files.
6
6
 
7
- ## Fetching instances
7
+ ### Fetching instances
8
8
 
9
9
  When fetching repo instances, directory entries in '/etc/yum/repos.d',
10
10
  '/etc/yum.repos.d', and the directory optionally specified by the reposdir
@@ -12,7 +12,7 @@ Puppet::Type.type(:yumrepo).provide(:inifile) do
12
12
  will be ignored. In addition, all sections in '/etc/yum.conf' aside from
13
13
  'main' will be created as sections.
14
14
 
15
- ## Storing instances
15
+ ### Storing instances
16
16
 
17
17
  When creating a new repository, a new section will be added in the first
18
18
  yum repo directory that exists. The custom directory specified by the
@@ -263,7 +263,10 @@ Puppet::Type.type(:zone).provide(:solaris) do
263
263
 
264
264
  unless Puppet::FileSystem.exist?(sysidcfg)
265
265
  begin
266
- File.open(sysidcfg, "w", 0600) do |f|
266
+ # For compatibility reasons use System encoding for this OS file
267
+ # the manifest string is UTF-8 so this could result in conversion errors
268
+ # which should propagate to users
269
+ Puppet::FileSystem.open(sysidcfg, 0600, "w:#{Encoding.default_external.name}") do |f|
267
270
  f.puts cfg
268
271
  end
269
272
  rescue => detail
@@ -41,7 +41,7 @@ An indirector has five methods, which are mapped into HTTP verbs for the REST in
41
41
  * `find(key)` - get a single value (mapped to GET or POST with a singular endpoint)
42
42
  * `search(key)` - get a list of matching values (mapped to GET with a plural endpoint)
43
43
  * `head(key)` - return true if the key exists (mapped to HEAD)
44
- * `destroy(key)` - remove the key van value (mapped to DELETE)
44
+ * `destroy(key)` - remove the key and value (mapped to DELETE)
45
45
  * `save(instance)` - write the instance to the store, using the instance's name as the key (mapped to PUT)
46
46
 
47
47
  These methods are available via the `indirection` class method on the indirected classes. For example:
@@ -1,7 +1,6 @@
1
1
  require 'puppet'
2
2
  require 'puppet/util/tagging'
3
3
  require 'puppet/parameter'
4
- require 'puppet/data_providers'
5
4
 
6
5
  # The simplest resource class. Eventually it will function as the
7
6
  # base class for all resource-like behaviour.
@@ -45,7 +44,7 @@ class Puppet::Resource
45
44
  raise Puppet::Error, 'Unable to deserialize non-Data type parameters unless a deserializer is provided' unless json_deserializer
46
45
  reader = json_deserializer.reader
47
46
  ext_params.each do |param, value|
48
- reader.re_initialize([value])
47
+ reader.re_initialize(value)
49
48
  resource[param] = json_deserializer.read
50
49
  end
51
50
  end
@@ -104,7 +103,7 @@ class Puppet::Resource
104
103
  writer.clear_io
105
104
  json_serializer.write(ext_params[key])
106
105
  writer.finish
107
- ext_params[key] = writer.to_a[0]
106
+ ext_params[key] = writer.to_a
108
107
  end
109
108
  data['ext_parameters'] = ext_params
110
109
  end
@@ -426,8 +426,10 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
426
426
  if resources = data['resources']
427
427
  # TODO: The deserializer needs a loader in order to deserialize types defined using the puppet language.
428
428
  json_deserializer = nil
429
- if Puppet[:rich_data] || result.environment_instance && result.environment_instance.rich_data?
430
- json_deserializer = Puppet::Pops::Serialization::Deserializer.new(Puppet::Pops::Serialization::JSON::Reader.new([]), nil)
429
+ if resources.any? { |res| res.has_key?('ext_parameters') }
430
+ json_deserializer = Puppet::Pops::Serialization::Deserializer.new(
431
+ Puppet::Pops::Serialization::JSON::Reader.new([]),
432
+ Puppet::Pops::Loaders.catalog_loader)
431
433
  end
432
434
  result.add_resource(*resources.collect do |res|
433
435
  Puppet::Resource.from_data_hash(res, json_deserializer)
@@ -536,7 +538,10 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
536
538
 
537
539
  # Store the classes in the classfile.
538
540
  def write_class_file
539
- ::File.open(Puppet[:classfile], "w") do |f|
541
+ # classfile paths may contain UTF-8
542
+ # https://docs.puppet.com/puppet/latest/reference/configuration.html#classfile
543
+ classfile = Puppet.settings.setting(:classfile)
544
+ Puppet::FileSystem.open(classfile.value, classfile.mode.to_i(8), "w:UTF-8") do |f|
540
545
  f.puts classes.join("\n")
541
546
  end
542
547
  rescue => detail
@@ -545,7 +550,10 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
545
550
 
546
551
  # Store the list of resources we manage
547
552
  def write_resource_file
548
- ::File.open(Puppet[:resourcefile], "w") do |f|
553
+ # resourcefile contains resources that may be UTF-8 names
554
+ # https://docs.puppet.com/puppet/latest/reference/configuration.html#resourcefile
555
+ resourcefile = Puppet.settings.setting(:resourcefile)
556
+ Puppet::FileSystem.open(resourcefile.value, resourcefile.mode.to_i(8), "w:UTF-8") do |f|
549
557
  to_print = resources.map do |resource|
550
558
  next unless resource.managed?
551
559
  if resource.name_var
@@ -545,11 +545,11 @@ class Puppet::Resource::Type
545
545
  def create_params_struct
546
546
  arg_types = argument_types
547
547
  type_factory = Puppet::Pops::Types::TypeFactory
548
- members = { type_factory.optional(type_factory.string(nil, NAME)) => type_factory.any }
548
+ members = { type_factory.optional(type_factory.string(NAME)) => type_factory.any }
549
549
 
550
550
  if application?
551
551
  resource_type = type_factory.type_type(type_factory.resource)
552
- members[type_factory.optional(type_factory.string(nil, NODES))] = type_factory.hash_of(type_factory.variant(
552
+ members[type_factory.optional(type_factory.string(NODES))] = type_factory.hash_of(type_factory.variant(
553
553
  resource_type, type_factory.array_of(resource_type)), type_factory.type_type(type_factory.resource('node')))
554
554
  end
555
555
 
@@ -559,7 +559,7 @@ class Puppet::Resource::Type
559
559
  end
560
560
 
561
561
  arguments.each_pair do |name, default|
562
- key_type = type_factory.string(nil, name.to_s)
562
+ key_type = type_factory.string(name.to_s)
563
563
  key_type = type_factory.optional(key_type) unless default.nil?
564
564
 
565
565
  arg_type = arg_types[name]
@@ -636,7 +636,7 @@ class Puppet::Settings
636
636
  # because multiple sections could set the same value
637
637
  # and I'm too lazy to only set the metadata once.
638
638
  if @configuration_file
639
- searchpath(nil, preferred_run_mode).reverse.each do |source|
639
+ searchpath(nil, preferred_run_mode).reverse_each do |source|
640
640
  if source.type == :section && section = @configuration_file.sections[source.name]
641
641
  apply_metadata_from_section(section)
642
642
  end
@@ -25,7 +25,8 @@ class Puppet::Settings::ConfigFile
25
25
  allowed_section_names << 'main' unless allowed_section_names.include?('main')
26
26
  end
27
27
 
28
- ini = Puppet::Settings::IniFile.parse(StringIO.new(text))
28
+ # in Ruby 1.9.3 strings are not UTF-8 by default, so ensure text is treated properly
29
+ ini = Puppet::Settings::IniFile.parse(StringIO.new(text).set_encoding(Encoding::UTF_8))
29
30
  unique_sections_in(ini, file, allowed_section_names).each do |section_name|
30
31
  section = Section.new(section_name.to_sym)
31
32
  result.with_section(section)
@@ -4,6 +4,12 @@ class Puppet::Settings::DirectorySetting < Puppet::Settings::FileSetting
4
4
  end
5
5
 
6
6
  # @api private
7
+ #
8
+ # @param option [String] Extra file operation mode information to use
9
+ # (defaults to read-only mode 'r')
10
+ # This is the standard mechanism Ruby uses in the IO class, and therefore
11
+ # encoding may be explicitly like fmode : encoding or fmode : "BOM|UTF-*"
12
+ # for example, a:ASCII or w+:UTF-8
7
13
  def open_file(filename, option = 'r', &block)
8
14
  controlled_access do |mode|
9
15
  Puppet::FileSystem.open(filename, mode, option, &block)
@@ -40,7 +40,7 @@ class Puppet::Settings::EnvironmentConf
40
40
  # without interpolation. This is a special case for the default configured
41
41
  # environment returned by the Puppet::Environments::StaticPrivate loader.
42
42
  def self.static_for(environment, environment_timeout = 0, static_catalogs = false, rich_data = false)
43
- Static.new(environment, environment_timeout, static_catalogs, 'none', rich_data)
43
+ Static.new(environment, environment_timeout, static_catalogs, nil, rich_data)
44
44
  end
45
45
 
46
46
  attr_reader :section, :path_to_env, :global_modulepath
@@ -176,7 +176,7 @@ class Puppet::Settings::EnvironmentConf
176
176
  attr_reader :rich_data
177
177
  attr_reader :static_catalogs
178
178
 
179
- def initialize(environment, environment_timeout, static_catalogs, environment_data_provider = 'none', rich_data = false)
179
+ def initialize(environment, environment_timeout, static_catalogs, environment_data_provider = nil, rich_data = false)
180
180
  @environment = environment
181
181
  @environment_timeout = environment_timeout
182
182
  @static_catalogs = static_catalogs
@@ -184,6 +184,10 @@ class Puppet::Settings::EnvironmentConf
184
184
  @rich_data = rich_data
185
185
  end
186
186
 
187
+ def path_to_env
188
+ nil
189
+ end
190
+
187
191
  def manifest
188
192
  @environment.manifest
189
193
  end