puppet 5.3.3-x86-mingw32 → 5.3.4-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 (291) hide show
  1. data/CONTRIBUTING.md +1 -1
  2. data/Gemfile +3 -0
  3. data/ext/puppet-test +3 -2
  4. data/lib/hiera/puppet_function.rb +5 -2
  5. data/lib/hiera_puppet.rb +3 -3
  6. data/lib/puppet.rb +2 -5
  7. data/lib/puppet/agent.rb +22 -2
  8. data/lib/puppet/agent/locker.rb +6 -5
  9. data/lib/puppet/application.rb +18 -1
  10. data/lib/puppet/application/agent.rb +9 -2
  11. data/lib/puppet/application/apply.rb +1 -1
  12. data/lib/puppet/application/config.rb +1 -0
  13. data/lib/puppet/application/device.rb +1 -2
  14. data/lib/puppet/application/filebucket.rb +22 -5
  15. data/lib/puppet/application/help.rb +1 -0
  16. data/lib/puppet/application/lookup.rb +1 -3
  17. data/lib/puppet/application_support.rb +6 -1
  18. data/lib/puppet/bindings.rb +2 -1
  19. data/lib/puppet/configurer.rb +9 -4
  20. data/lib/puppet/configurer/downloader_factory.rb +10 -0
  21. data/lib/puppet/configurer/plugin_handler.rb +11 -4
  22. data/lib/puppet/daemon.rb +2 -2
  23. data/lib/puppet/defaults.rb +99 -27
  24. data/lib/puppet/environments.rb +2 -0
  25. data/lib/puppet/error.rb +5 -15
  26. data/lib/puppet/external/pson/common.rb +2 -2
  27. data/lib/puppet/face/catalog.rb +1 -1
  28. data/lib/puppet/face/config.rb +14 -1
  29. data/lib/puppet/face/epp.rb +4 -2
  30. data/lib/puppet/face/help.rb +12 -14
  31. data/lib/puppet/face/man.rb +1 -0
  32. data/lib/puppet/face/module/build.rb +1 -1
  33. data/lib/puppet/face/module/list.rb +6 -17
  34. data/lib/puppet/face/module/uninstall.rb +14 -3
  35. data/lib/puppet/face/node.rb +1 -0
  36. data/lib/puppet/face/status.rb +1 -0
  37. data/lib/puppet/file_serving/base.rb +2 -1
  38. data/lib/puppet/file_serving/configuration.rb +3 -0
  39. data/lib/puppet/file_serving/configuration/parser.rb +23 -9
  40. data/lib/puppet/file_serving/mount/locales.rb +35 -0
  41. data/lib/puppet/forge.rb +2 -1
  42. data/lib/puppet/forge/errors.rb +24 -22
  43. data/lib/puppet/functions/binary_file.rb +1 -0
  44. data/lib/puppet/functions/each.rb +10 -4
  45. data/lib/puppet/functions/eyaml_lookup_key.rb +4 -2
  46. data/lib/puppet/functions/lookup.rb +2 -2
  47. data/lib/puppet/functions/map.rb +12 -2
  48. data/lib/puppet/functions/slice.rb +2 -3
  49. data/lib/puppet/functions/unique.rb +1 -1
  50. data/lib/puppet/functions/yaml_data.rb +1 -1
  51. data/lib/puppet/gettext/config.rb +144 -41
  52. data/lib/puppet/gettext/module_translations.rb +42 -0
  53. data/lib/puppet/graph/relationship_graph.rb +1 -1
  54. data/lib/puppet/graph/simple_graph.rb +3 -3
  55. data/lib/puppet/indirector/catalog/compiler.rb +40 -25
  56. data/lib/puppet/indirector/exec.rb +1 -1
  57. data/lib/puppet/indirector/facts/facter.rb +3 -3
  58. data/lib/puppet/indirector/facts/network_device.rb +2 -2
  59. data/lib/puppet/indirector/file_bucket_file/file.rb +4 -1
  60. data/lib/puppet/indirector/indirection.rb +17 -9
  61. data/lib/puppet/indirector/ldap.rb +2 -2
  62. data/lib/puppet/indirector/node/write_only_yaml.rb +3 -1
  63. data/lib/puppet/indirector/rest.rb +8 -5
  64. data/lib/puppet/indirector/ssl_file.rb +2 -2
  65. data/lib/puppet/indirector/terminus.rb +3 -3
  66. data/lib/puppet/interface.rb +2 -1
  67. data/lib/puppet/interface/action.rb +41 -24
  68. data/lib/puppet/interface/action_builder.rb +14 -5
  69. data/lib/puppet/interface/action_manager.rb +1 -1
  70. data/lib/puppet/interface/documentation.rb +21 -10
  71. data/lib/puppet/interface/face_collection.rb +4 -2
  72. data/lib/puppet/interface/option.rb +36 -15
  73. data/lib/puppet/interface/option_builder.rb +23 -9
  74. data/lib/puppet/interface/option_manager.rb +8 -3
  75. data/lib/puppet/metatype/manager.rb +7 -3
  76. data/lib/puppet/module.rb +18 -21
  77. data/lib/puppet/module_tool/errors/installer.rb +18 -20
  78. data/lib/puppet/module_tool/errors/shared.rb +20 -15
  79. data/lib/puppet/module_tool/errors/uninstaller.rb +1 -0
  80. data/lib/puppet/module_tool/errors/upgrader.rb +1 -1
  81. data/lib/puppet/module_tool/tar/mini.rb +57 -4
  82. data/lib/puppet/network/auth_config_parser.rb +18 -13
  83. data/lib/puppet/network/authstore.rb +2 -2
  84. data/lib/puppet/network/client_request.rb +1 -1
  85. data/lib/puppet/network/format.rb +3 -3
  86. data/lib/puppet/network/http/api/indirection_type.rb +1 -1
  87. data/lib/puppet/network/http/api/master/v3/environment.rb +5 -2
  88. data/lib/puppet/network/http/error.rb +7 -7
  89. data/lib/puppet/network/http/factory.rb +9 -0
  90. data/lib/puppet/network/http/rack.rb +2 -2
  91. data/lib/puppet/network/http/webrick.rb +2 -4
  92. data/lib/puppet/node.rb +25 -6
  93. data/lib/puppet/node/environment.rb +14 -0
  94. data/lib/puppet/node/facts.rb +9 -0
  95. data/lib/puppet/parameter.rb +3 -3
  96. data/lib/puppet/parameter/value_collection.rb +9 -9
  97. data/lib/puppet/parser/ast/leaf.rb +1 -1
  98. data/lib/puppet/parser/ast/node.rb +2 -2
  99. data/lib/puppet/parser/ast/pops_bridge.rb +1 -1
  100. data/lib/puppet/parser/compiler.rb +6 -5
  101. data/lib/puppet/parser/functions.rb +1 -1
  102. data/lib/puppet/parser/functions/generate.rb +2 -4
  103. data/lib/puppet/parser/functions/inline_template.rb +1 -2
  104. data/lib/puppet/parser/functions/sprintf.rb +17 -3
  105. data/lib/puppet/parser/functions/template.rb +6 -2
  106. data/lib/puppet/parser/resource.rb +30 -31
  107. data/lib/puppet/parser/scope.rb +20 -11
  108. data/lib/puppet/parser/templatewrapper.rb +4 -3
  109. data/lib/puppet/pops/evaluator/collector_transformer.rb +2 -1
  110. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -1
  111. data/lib/puppet/pops/evaluator/epp_evaluator.rb +21 -8
  112. data/lib/puppet/pops/evaluator/evaluator_impl.rb +2 -1
  113. data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
  114. data/lib/puppet/pops/evaluator/runtime3_converter.rb +3 -1
  115. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +1 -1
  116. data/lib/puppet/pops/evaluator/runtime3_support.rb +4 -4
  117. data/lib/puppet/pops/functions/dispatch.rb +1 -1
  118. data/lib/puppet/pops/functions/function.rb +8 -2
  119. data/lib/puppet/pops/issue_reporter.rb +7 -2
  120. data/lib/puppet/pops/issues.rb +10 -4
  121. data/lib/puppet/pops/label_provider.rb +1 -1
  122. data/lib/puppet/pops/loader/module_loaders.rb +5 -2
  123. data/lib/puppet/pops/loader/static_loader.rb +1 -1
  124. data/lib/puppet/pops/loaders.rb +7 -3
  125. data/lib/puppet/pops/lookup/explainer.rb +2 -1
  126. data/lib/puppet/pops/lookup/hiera_config.rb +2 -2
  127. data/lib/puppet/pops/lookup/lookup_adapter.rb +4 -4
  128. data/lib/puppet/pops/merge_strategy.rb +6 -3
  129. data/lib/puppet/pops/migration/migration_checker.rb +8 -8
  130. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  131. data/lib/puppet/pops/model/factory.rb +4 -2
  132. data/lib/puppet/pops/resource/resource_type_impl.rb +1 -1
  133. data/lib/puppet/pops/serialization/abstract_writer.rb +2 -1
  134. data/lib/puppet/pops/types/iterable.rb +2 -0
  135. data/lib/puppet/pops/types/p_object_type.rb +36 -15
  136. data/lib/puppet/pops/types/type_calculator.rb +2 -1
  137. data/lib/puppet/pops/types/type_factory.rb +3 -1
  138. data/lib/puppet/pops/types/type_mismatch_describer.rb +19 -6
  139. data/lib/puppet/pops/types/type_parser.rb +7 -7
  140. data/lib/puppet/pops/types/types.rb +10 -4
  141. data/lib/puppet/pops/validation.rb +14 -12
  142. data/lib/puppet/property.rb +14 -6
  143. data/lib/puppet/property/ensure.rb +2 -2
  144. data/lib/puppet/provider.rb +4 -4
  145. data/lib/puppet/provider/group/aix.rb +4 -2
  146. data/lib/puppet/provider/ldap.rb +2 -2
  147. data/lib/puppet/provider/naginator.rb +1 -1
  148. data/lib/puppet/provider/nameservice.rb +7 -4
  149. data/lib/puppet/provider/nameservice/directoryservice.rb +4 -3
  150. data/lib/puppet/provider/package/aix.rb +1 -1
  151. data/lib/puppet/provider/package/nim.rb +7 -8
  152. data/lib/puppet/provider/package/opkg.rb +1 -1
  153. data/lib/puppet/provider/package/pkg.rb +9 -6
  154. data/lib/puppet/provider/package/pkgutil.rb +3 -3
  155. data/lib/puppet/provider/package/yum.rb +1 -1
  156. data/lib/puppet/provider/parsedfile.rb +4 -4
  157. data/lib/puppet/provider/selmodule/semodule.rb +5 -3
  158. data/lib/puppet/provider/service/base.rb +1 -1
  159. data/lib/puppet/provider/service/init.rb +1 -1
  160. data/lib/puppet/provider/service/launchd.rb +2 -2
  161. data/lib/puppet/provider/service/runit.rb +2 -1
  162. data/lib/puppet/provider/service/smf.rb +2 -0
  163. data/lib/puppet/provider/service/systemd.rb +1 -0
  164. data/lib/puppet/provider/service/upstart.rb +1 -1
  165. data/lib/puppet/provider/user/aix.rb +13 -6
  166. data/lib/puppet/provider/user/openbsd.rb +2 -1
  167. data/lib/puppet/provider/yumrepo/inifile.rb +2 -1
  168. data/lib/puppet/provider/zone/solaris.rb +2 -2
  169. data/lib/puppet/reference/configuration.rb +4 -2
  170. data/lib/puppet/relationship.rb +2 -1
  171. data/lib/puppet/reports/store.rb +1 -1
  172. data/lib/puppet/resource.rb +7 -5
  173. data/lib/puppet/resource/capability_finder.rb +14 -11
  174. data/lib/puppet/resource/catalog.rb +33 -18
  175. data/lib/puppet/resource/type.rb +5 -5
  176. data/lib/puppet/settings.rb +19 -13
  177. data/lib/puppet/settings/base_setting.rb +23 -8
  178. data/lib/puppet/settings/config_file.rb +14 -4
  179. data/lib/puppet/settings/environment_conf.rb +19 -9
  180. data/lib/puppet/ssl/base.rb +9 -4
  181. data/lib/puppet/ssl/oids.rb +8 -2
  182. data/lib/puppet/syntax_checkers/base64.rb +5 -6
  183. data/lib/puppet/transaction.rb +7 -3
  184. data/lib/puppet/transaction/persistence.rb +16 -1
  185. data/lib/puppet/transaction/report.rb +6 -0
  186. data/lib/puppet/type.rb +27 -35
  187. data/lib/puppet/type/file.rb +2 -1
  188. data/lib/puppet/type/file/data_sync.rb +2 -1
  189. data/lib/puppet/type/file/source.rb +1 -1
  190. data/lib/puppet/type/group.rb +1 -1
  191. data/lib/puppet/type/mount.rb +1 -1
  192. data/lib/puppet/type/resources.rb +1 -1
  193. data/lib/puppet/type/schedule.rb +26 -14
  194. data/lib/puppet/type/user.rb +9 -3
  195. data/lib/puppet/type/zone.rb +1 -1
  196. data/lib/puppet/util.rb +27 -21
  197. data/lib/puppet/util/at_fork/solaris.rb +6 -4
  198. data/lib/puppet/util/command_line.rb +5 -0
  199. data/lib/puppet/util/command_line/trollop.rb +6 -5
  200. data/lib/puppet/util/errors.rb +61 -8
  201. data/lib/puppet/util/fileparsing.rb +3 -5
  202. data/lib/puppet/util/http_proxy.rb +14 -6
  203. data/lib/puppet/util/instance_loader.rb +1 -3
  204. data/lib/puppet/util/ldap/manager.rb +6 -3
  205. data/lib/puppet/util/log.rb +19 -24
  206. data/lib/puppet/util/logging.rb +21 -28
  207. data/lib/puppet/util/methodhelper.rb +1 -1
  208. data/lib/puppet/util/nagios_maker.rb +1 -1
  209. data/lib/puppet/util/network_device/config.rb +21 -13
  210. data/lib/puppet/util/plist.rb +3 -1
  211. data/lib/puppet/util/posix.rb +1 -1
  212. data/lib/puppet/util/provider_features.rb +1 -1
  213. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
  214. data/lib/puppet/util/reference.rb +2 -3
  215. data/lib/puppet/util/selinux.rb +1 -1
  216. data/lib/puppet/util/storage.rb +2 -2
  217. data/lib/puppet/util/windows/eventlog.rb +10 -5
  218. data/lib/puppet/util/windows/file.rb +61 -9
  219. data/lib/puppet/util/windows/process.rb +1 -1
  220. data/lib/puppet/util/windows/taskscheduler.rb +2 -2
  221. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +5 -1
  222. data/lib/puppet/version.rb +1 -1
  223. data/locales/en/puppet.po +19 -0
  224. data/locales/ja/puppet.po +2739 -809
  225. data/locales/puppet.pot +2367 -734
  226. data/spec/fixtures/unit/application/environments/production/data/common.yaml +2 -0
  227. data/spec/integration/agent/logging_spec.rb +2 -0
  228. data/spec/integration/faces/plugin_spec.rb +1 -0
  229. data/spec/integration/network/authconfig_spec.rb +2 -2
  230. data/spec/integration/parser/collection_spec.rb +2 -2
  231. data/spec/integration/parser/scope_spec.rb +16 -3
  232. data/spec/integration/provider/cron/crontab_spec.rb +1 -0
  233. data/spec/integration/transaction/report_spec.rb +5 -0
  234. data/spec/lib/matchers/json.rb +14 -13
  235. data/spec/unit/agent_spec.rb +33 -0
  236. data/spec/unit/application/config_spec.rb +4 -0
  237. data/spec/unit/application/lookup_spec.rb +30 -0
  238. data/spec/unit/application_spec.rb +18 -0
  239. data/spec/unit/configurer/downloader_factory_spec.rb +33 -0
  240. data/spec/unit/configurer/plugin_handler_spec.rb +71 -16
  241. data/spec/unit/environments_spec.rb +15 -0
  242. data/spec/unit/face/config_spec.rb +8 -9
  243. data/spec/unit/face/epp_face_spec.rb +2 -2
  244. data/spec/unit/face/plugin_spec.rb +50 -4
  245. data/spec/unit/file_serving/configuration/parser_spec.rb +2 -2
  246. data/spec/unit/file_serving/mount/locales_spec.rb +73 -0
  247. data/spec/unit/functions/break_spec.rb +108 -50
  248. data/spec/unit/functions/defined_spec.rb +2 -2
  249. data/spec/unit/functions/hiera_spec.rb +0 -1
  250. data/spec/unit/functions/lookup_spec.rb +85 -19
  251. data/spec/unit/functions/next_spec.rb +1 -1
  252. data/spec/unit/functions/return_spec.rb +2 -2
  253. data/spec/unit/gettext/config_spec.rb +125 -0
  254. data/spec/unit/gettext/module_loading_spec.rb +53 -0
  255. data/spec/unit/indirector/json_spec.rb +0 -11
  256. data/spec/unit/indirector/node/exec_spec.rb +1 -1
  257. data/spec/unit/info_service_spec.rb +1 -1
  258. data/spec/unit/interface_spec.rb +12 -0
  259. data/spec/unit/module_spec.rb +0 -28
  260. data/spec/unit/module_tool/tar/mini_spec.rb +34 -5
  261. data/spec/unit/network/http/factory_spec.rb +22 -0
  262. data/spec/unit/network/http/webrick_spec.rb +30 -29
  263. data/spec/unit/node/environment_spec.rb +16 -0
  264. data/spec/unit/node_spec.rb +102 -16
  265. data/spec/unit/parser/environment_compiler_spec.rb +1 -1
  266. data/spec/unit/parser/functions/sprintf_spec.rb +26 -0
  267. data/spec/unit/parser/resource/param_spec.rb +1 -1
  268. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +9 -9
  269. data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
  270. data/spec/unit/pops/parser/parse_containers_spec.rb +1 -1
  271. data/spec/unit/pops/types/type_calculator_spec.rb +40 -0
  272. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +9 -0
  273. data/spec/unit/provider/selmodule_spec.rb +6 -0
  274. data/spec/unit/provider/service/init_spec.rb +1 -1
  275. data/spec/unit/provider/service/smf_spec.rb +2 -0
  276. data/spec/unit/provider/service/systemd_spec.rb +14 -0
  277. data/spec/unit/resource/catalog_spec.rb +12 -2
  278. data/spec/unit/settings/config_file_spec.rb +1 -1
  279. data/spec/unit/transaction/persistence_spec.rb +42 -0
  280. data/spec/unit/transaction/report_spec.rb +19 -4
  281. data/spec/unit/transaction_spec.rb +27 -0
  282. data/spec/unit/type/schedule_spec.rb +14 -0
  283. data/spec/unit/type_spec.rb +3 -3
  284. data/spec/unit/util/errors_spec.rb +1 -1
  285. data/spec/unit/util/http_proxy_spec.rb +37 -0
  286. data/spec/unit/util/log_spec.rb +3 -3
  287. data/spec/unit/util/logging_spec.rb +7 -7
  288. data/spec/unit/util/monkey_patches_spec.rb +6 -2
  289. metadata +3445 -3416
  290. checksums.yaml +0 -7
  291. data/spec/unit/gettext_config_spec.rb +0 -57
@@ -18,10 +18,10 @@ class Puppet::Node::Facts::NetworkDevice < Puppet::Indirector::Code
18
18
  end
19
19
 
20
20
  def destroy(facts)
21
- raise Puppet::DevError, "You cannot destroy facts in the code store; it is only used for getting facts from a remote device"
21
+ raise Puppet::DevError, _("You cannot destroy facts in the code store; it is only used for getting facts from a remote device")
22
22
  end
23
23
 
24
24
  def save(facts)
25
- raise Puppet::DevError, "You cannot save facts to the code store; it is only used for getting facts from a remote device"
25
+ raise Puppet::DevError, _("You cannot save facts to the code store; it is only used for getting facts from a remote device")
26
26
  end
27
27
  end
@@ -29,6 +29,7 @@ module Puppet::FileBucketFile
29
29
  raise _("Unable to diff on this platform") unless Puppet[:diff] != ""
30
30
  return diff(Puppet::FileSystem.path_string(contents_file), Puppet::FileSystem.path_string(other_contents_file))
31
31
  else
32
+ #TRANSLATORS "FileBucket" should not be translated
32
33
  Puppet.info _("FileBucket read %{checksum}") % { checksum: checksum }
33
34
  model.new(Puppet::FileSystem.binread(contents_file))
34
35
  end
@@ -158,7 +159,8 @@ module Puppet::FileBucketFile
158
159
  Puppet::FileSystem.exclusive_open(paths_file, 0640, 'a+:external') do |f|
159
160
  if Puppet::FileSystem.exist?(contents_file)
160
161
  if verify_identical_file(contents_file, bucket_file)
161
- Puppet.info "FileBucket got a duplicate file #{bucket_file.checksum}"
162
+ #TRANSLATORS "FileBucket" should not be translated
163
+ Puppet.info _("FileBucket got a duplicate file %{file_checksum}") % { file_checksum: bucket_file.checksum }
162
164
  Puppet::FileSystem.touch(contents_file)
163
165
  elsif contents_file_matches_checksum?(contents_file, bucket_file.checksum_data, bucket_file.checksum_type)
164
166
  # If the contents or sizes don't match, but the checksum does,
@@ -167,6 +169,7 @@ module Puppet::FileBucketFile
167
169
  # needed, but ask the user to validate.
168
170
  # Note: Don't print the full path to the bucket file in the
169
171
  # exception to avoid disclosing file system layout on server.
172
+ #TRANSLATORS "FileBucket" should not be translated
170
173
  Puppet.err(_("Unable to verify existing FileBucket backup at '%{path}'.") % { path: contents_file.to_path })
171
174
  raise Puppet::FileBucket::BucketError, _("Existing backup and new file have different content but same checksum, %{value}. Verify existing backup and remove if incorrect.") %
172
175
  { value: bucket_file.checksum }
@@ -37,7 +37,7 @@ class Puppet::Indirector::Indirection
37
37
 
38
38
  # Create and return our cache terminus.
39
39
  def cache
40
- raise(Puppet::DevError, "Tried to cache when no cache class was set") unless cache_class
40
+ raise Puppet::DevError, _("Tried to cache when no cache class was set") unless cache_class
41
41
  terminus(cache_class)
42
42
  end
43
43
 
@@ -97,7 +97,7 @@ class Puppet::Indirector::Indirection
97
97
  @cache_class = nil
98
98
  @terminus_class = nil
99
99
 
100
- raise(ArgumentError, "Indirection #{@name} is already defined") if @@indirections.find { |i| i.name == @name }
100
+ raise(ArgumentError, _("Indirection %{name} is already defined") % { name: @name }) if @@indirections.find { |i| i.name == @name }
101
101
  @@indirections << self
102
102
 
103
103
  @indirected_class = options.delete(:indirected_class)
@@ -118,7 +118,7 @@ class Puppet::Indirector::Indirection
118
118
  # Return the singleton terminus for this indirection.
119
119
  def terminus(terminus_name = nil)
120
120
  # Get the name of the terminus.
121
- raise Puppet::DevError, "No terminus specified for #{self.name}; cannot redirect" unless terminus_name ||= terminus_class
121
+ raise Puppet::DevError, _("No terminus specified for %{name}; cannot redirect") % { name: self.name } unless terminus_name ||= terminus_class
122
122
 
123
123
  termini[terminus_name] ||= make_terminus(terminus_name)
124
124
  end
@@ -132,7 +132,7 @@ class Puppet::Indirector::Indirection
132
132
  if setting = self.terminus_setting
133
133
  self.terminus_class = Puppet.settings[setting]
134
134
  else
135
- raise Puppet::DevError, "No terminus class nor terminus setting was provided for indirection #{self.name}"
135
+ raise Puppet::DevError, _("No terminus class nor terminus setting was provided for indirection %{name}") % { name: self.name}
136
136
  end
137
137
  end
138
138
  @terminus_class
@@ -150,9 +150,12 @@ class Puppet::Indirector::Indirection
150
150
 
151
151
  # This is used by terminus_class= and cache=.
152
152
  def validate_terminus_class(terminus_class)
153
- raise ArgumentError, "Invalid terminus name #{terminus_class.inspect}" unless terminus_class and terminus_class.to_s != ""
153
+ unless terminus_class and terminus_class.to_s != ""
154
+ raise ArgumentError, _("Invalid terminus name %{terminus_class}") % { terminus_class: terminus_class.inspect }
155
+ end
154
156
  unless Puppet::Indirector::Terminus.terminus_class(self.name, terminus_class)
155
- raise ArgumentError, "Could not find terminus #{terminus_class} for indirection #{self.name}"
157
+ raise ArgumentError, _("Could not find terminus %{terminus_class} for indirection %{name}") %
158
+ { terminus_class: terminus_class, name: self.name }
156
159
  end
157
160
  end
158
161
 
@@ -268,7 +271,7 @@ class Puppet::Indirector::Indirection
268
271
  terminus = prepare(request)
269
272
 
270
273
  if result = terminus.search(request)
271
- raise Puppet::DevError, "Search results from terminus #{terminus.name} are not an array" unless result.is_a?(Array)
274
+ raise Puppet::DevError, _("Search results from terminus %{terminus_name} are not an array") % { terminus_name: terminus.name } unless result.is_a?(Array)
272
275
  result.each do |instance|
273
276
  next unless instance.respond_to? :expiration
274
277
  instance.expiration ||= self.expiration
@@ -304,8 +307,13 @@ class Puppet::Indirector::Indirection
304
307
  return unless terminus.respond_to?(:authorized?)
305
308
 
306
309
  unless terminus.authorized?(request)
307
- msg = "Not authorized to call #{request.method} on #{request.description}"
308
- msg += " with #{request.options.inspect}" unless request.options.empty?
310
+ msg = if request.options.empty?
311
+ _("Not authorized to call %{method} on %{description}") %
312
+ { method: request.method, description: request.description }
313
+ else
314
+ _("Not authorized to call %{method} on %{description} with %{option}") %
315
+ { method: request.method, description: request.description, option: request.options.inspect }
316
+ end
309
317
  raise ArgumentError, msg
310
318
  end
311
319
  end
@@ -10,7 +10,7 @@ class Puppet::Indirector::Ldap < Puppet::Indirector::Terminus
10
10
  # Process the found entry. We assume that we don't just want the
11
11
  # ldap object.
12
12
  def process(entry)
13
- raise Puppet::DevError, "The 'process' method has not been overridden for the LDAP terminus for #{self.name}"
13
+ raise Puppet::DevError, _("The 'process' method has not been overridden for the LDAP terminus for %{name}") % { name: self.name }
14
14
  end
15
15
 
16
16
  # Default to all attributes.
@@ -24,7 +24,7 @@ class Puppet::Indirector::Ldap < Puppet::Indirector::Terminus
24
24
 
25
25
  # The ldap search filter to use.
26
26
  def search_filter(name)
27
- raise Puppet::DevError, "No search string set for LDAP terminus for #{self.name}"
27
+ raise Puppet::DevError, _("No search string set for LDAP terminus for %{name}") % { name: self.name }
28
28
  end
29
29
 
30
30
  # Find the ldap node, return the class list and parent node specially,
@@ -12,7 +12,9 @@ require 'puppet/indirector/yaml'
12
12
  #
13
13
  class Puppet::Node::WriteOnlyYaml < Puppet::Indirector::Yaml
14
14
  def initialize
15
- Puppet.warn_once('deprecations', 'Puppet::Node::WriteOnlyYaml', _('Puppet::Node::WriteOnlyYaml is deprecated and will be removed in a future release of Puppet.'))
15
+ #TRANSLATORS 'Puppet::Node::WriteOnlyYaml' is a class and should not be translated
16
+ message = _('Puppet::Node::WriteOnlyYaml is deprecated and will be removed in a future release of Puppet.')
17
+ Puppet.warn_once('deprecations', 'Puppet::Node::WriteOnlyYaml', message)
16
18
  super
17
19
  end
18
20
 
@@ -262,11 +262,14 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus
262
262
 
263
263
  def handle_response(request, response)
264
264
  server_version = response[Puppet::Network::HTTP::HEADER_PUPPET_VERSION]
265
- if server_version &&
266
- SemanticPuppet::Version.parse(server_version).major < MAJOR_VERSION_JSON_DEFAULT &&
267
- Puppet[:preferred_serialization_format] != 'pson'
268
- Puppet.warning("Downgrading to PSON for future requests")
269
- Puppet[:preferred_serialization_format] = 'pson'
265
+ if server_version
266
+ Puppet.push_context({:server_agent_version => server_version})
267
+ if SemanticPuppet::Version.parse(server_version).major < MAJOR_VERSION_JSON_DEFAULT &&
268
+ Puppet[:preferred_serialization_format] != 'pson'
269
+ #TRANSLATORS "PSON" should not be translated
270
+ Puppet.warning(_("Downgrading to PSON for future requests"))
271
+ Puppet[:preferred_serialization_format] = 'pson'
272
+ end
270
273
  end
271
274
  end
272
275
 
@@ -49,7 +49,7 @@ class Puppet::Indirector::SslFile < Puppet::Indirector::Terminus
49
49
  def initialize
50
50
  Puppet.settings.use(:main, :ssl)
51
51
 
52
- (collection_directory || file_location) or raise Puppet::DevError, "No file or directory setting provided; terminus #{self.class.name} cannot function"
52
+ (collection_directory || file_location) or raise Puppet::DevError, _("No file or directory setting provided; terminus %{class_name} cannot function") % { class_name: self.class.name }
53
53
  end
54
54
 
55
55
  def path(name)
@@ -190,7 +190,7 @@ class Puppet::Indirector::SslFile < Puppet::Indirector::Terminus
190
190
  raise Puppet::Error, _("Could not write %{path} to %{setting}: %{detail}") % { path: path, setting: setting, detail: detail }, detail.backtrace
191
191
  end
192
192
  else
193
- raise Puppet::DevError, "You must provide a setting to determine where the files are stored"
193
+ raise Puppet::DevError, _("You must provide a setting to determine where the files are stored")
194
194
  end
195
195
  end
196
196
  end
@@ -46,7 +46,7 @@ class Puppet::Indirector::Terminus
46
46
  def inherited(subclass)
47
47
  longname = subclass.to_s
48
48
  if longname =~ /#<Class/
49
- raise Puppet::DevError, "Terminus subclasses must have associated constants"
49
+ raise Puppet::DevError, _("Terminus subclasses must have associated constants")
50
50
  end
51
51
  names = longname.split("::")
52
52
 
@@ -71,7 +71,7 @@ class Puppet::Indirector::Terminus
71
71
  processed_name = names.pop.sub(/^[A-Z]/) { |i| i.downcase }.gsub(/[A-Z]/) { |i| "_#{i.downcase}" }
72
72
 
73
73
  if processed_name.empty?
74
- raise Puppet::DevError, "Could not discern indirection model from class constant"
74
+ raise Puppet::DevError, _("Could not discern indirection model from class constant")
75
75
  end
76
76
 
77
77
  # This will throw an exception if the indirection instance cannot be found.
@@ -129,7 +129,7 @@ class Puppet::Indirector::Terminus
129
129
  end
130
130
 
131
131
  def initialize
132
- raise Puppet::DevError, "Cannot create instances of abstract terminus types" if self.class.abstract_terminus?
132
+ raise Puppet::DevError, _("Cannot create instances of abstract terminus types") if self.class.abstract_terminus?
133
133
  end
134
134
 
135
135
  def model
@@ -149,7 +149,7 @@ class Puppet::Interface
149
149
  # @api private
150
150
  def initialize(name, version, &block)
151
151
  unless SemanticPuppet::Version.valid?(version)
152
- raise ArgumentError, "Cannot create face #{name.inspect} with invalid version number '#{version}'!"
152
+ raise ArgumentError, _("Cannot create face %{name} with invalid version number '%{version}'!") % { name: name.inspect, version: version }
153
153
  end
154
154
 
155
155
  @name = Puppet::Interface::FaceCollection.underscorize(name)
@@ -178,6 +178,7 @@ class Puppet::Interface
178
178
  def to_s
179
179
  "Puppet::Face[#{name.inspect}, #{version.inspect}]"
180
180
  end
181
+ alias_method :inspect, :to_s
181
182
 
182
183
  # @return [void]
183
184
  def deprecate
@@ -78,7 +78,7 @@ class Puppet::Interface::Action
78
78
  # @api private
79
79
  def when_rendering(type)
80
80
  unless type.is_a? Symbol
81
- raise ArgumentError, "The rendering format must be a symbol, not #{type.class.name}"
81
+ raise ArgumentError, _("The rendering format must be a symbol, not %{class_name}") % { class_name: type.class.name }
82
82
  end
83
83
  # Do we have a rendering hook for this name?
84
84
  return @when_rendering[type].bind(@face) if @when_rendering.has_key? type
@@ -94,28 +94,38 @@ class Puppet::Interface::Action
94
94
  # @api private
95
95
  def set_rendering_method_for(type, proc)
96
96
  unless proc.is_a? Proc
97
- msg = "The second argument to set_rendering_method_for must be a Proc"
98
- msg += ", not #{proc.class.name}" unless proc.nil?
97
+ msg = if proc.nil?
98
+ #TRANSLATORS 'set_rendering_method_for' and 'Proc' should not be translated
99
+ _("The second argument to set_rendering_method_for must be a Proc")
100
+ else
101
+ #TRANSLATORS 'set_rendering_method_for' and 'Proc' should not be translated
102
+ _("The second argument to set_rendering_method_for must be a Proc, not %{class_name}") %
103
+ { class_name: proc.class.name }
104
+ end
99
105
  raise ArgumentError, msg
100
106
  end
101
107
 
102
108
  if proc.arity != 1 and proc.arity != (@positional_arg_count + 1)
103
- msg = "the when_rendering method for the #{@face.name} face #{name} action "
104
- msg += "takes either just one argument, the result of when_invoked, "
105
- msg += "or the result plus the #{@positional_arg_count} arguments passed "
106
- msg += "to the when_invoked block, not "
107
- if proc.arity < 0 then
108
- msg += "a variable number"
109
- else
110
- msg += proc.arity.to_s
111
- end
109
+ msg = if proc.arity < 0 then
110
+ #TRANSLATORS 'when_rendering', 'when_invoked' are method names and should not be translated
111
+ _("The when_rendering method for the %{face} face %{name} action takes either just one argument,"\
112
+ " the result of when_invoked, or the result plus the %{arg_count} arguments passed to the"\
113
+ " when_invoked block, not a variable number") %
114
+ { face: @face.name, name: name, arg_count: @positional_arg_count }
115
+ else
116
+ #TRANSLATORS 'when_rendering', 'when_invoked' are method names and should not be translated
117
+ _("The when_rendering method for the %{face} face %{name} action takes either just one argument,"\
118
+ " the result of when_invoked, or the result plus the %{arg_count} arguments passed to the"\
119
+ " when_invoked block, not %{string}") %
120
+ { face: @face.name, name: name, arg_count: @positional_arg_count, string: proc.arity.to_s }
121
+ end
112
122
  raise ArgumentError, msg
113
123
  end
114
124
  unless type.is_a? Symbol
115
- raise ArgumentError, "The rendering format must be a symbol, not #{type.class.name}"
125
+ raise ArgumentError, _("The rendering format must be a symbol, not %{class_name}") % { class_name: type.class.name }
116
126
  end
117
127
  if @when_rendering.has_key? type then
118
- raise ArgumentError, "You can't define a rendering method for #{type} twice"
128
+ raise ArgumentError, _("You can't define a rendering method for %{type} twice") % { type: type }
119
129
  end
120
130
  # Now, the ugly bit. We add the method to our interface object, and
121
131
  # retrieve it, to rotate through the dance of getting a suitable method
@@ -213,7 +223,8 @@ class Puppet::Interface::Action
213
223
  # but will on 1.9.2, which treats it as "no arguments". Which bites,
214
224
  # because this just begs for us to wind up in the horrible situation
215
225
  # where a 1.8 vs 1.9 error bites our end users. --daniel 2011-04-19
216
- raise ArgumentError, "when_invoked requires at least one argument (options) for action #{@name}"
226
+ #TRANSLATORS 'when_invoked' should not be translated
227
+ raise ArgumentError, _("when_invoked requires at least one argument (options) for action %{name}") % { name: @name }
217
228
  elsif arity > 0 then
218
229
  range = Range.new(1, arity - 1)
219
230
  decl = range.map { |x| "arg#{x}" } << "options = {}"
@@ -259,9 +270,11 @@ WRAPPER
259
270
  def add_option(option)
260
271
  option.aliases.each do |name|
261
272
  if conflict = get_option(name) then
262
- raise ArgumentError, "Option #{option} conflicts with existing option #{conflict}"
273
+ raise ArgumentError, _("Option %{option} conflicts with existing option %{conflict}") %
274
+ { option: option, conflict: conflict }
263
275
  elsif conflict = @face.get_option(name) then
264
- raise ArgumentError, "Option #{option} conflicts with existing option #{conflict} on #{@face}"
276
+ raise ArgumentError, _("Option %{option} conflicts with existing option %{conflict} on %{face}") %
277
+ { option: option, conflict: conflict, face: @face }
265
278
  end
266
279
  end
267
280
 
@@ -285,7 +298,10 @@ WRAPPER
285
298
  def add_display_global_options(*args)
286
299
  @display_global_options ||= []
287
300
  [args].flatten.each do |refopt|
288
- raise ArgumentError, "Global option #{refopt} does not exist in Puppet.settings" unless Puppet.settings.include? refopt
301
+ unless Puppet.settings.include? refopt
302
+ #TRANSLATORS 'Puppet.settings' should not be translated
303
+ raise ArgumentError, _("Global option %{option} does not exist in Puppet.settings") % { option: refopt }
304
+ end
289
305
  @display_global_options << refopt
290
306
  end
291
307
  @display_global_options.uniq!
@@ -331,13 +347,14 @@ WRAPPER
331
347
  end
332
348
 
333
349
  unless overlap.empty?
334
- msg = overlap.map {|k, v| "(#{k}, #{v.sort.join(', ')})" }.join(", ")
335
- raise ArgumentError, "Multiple aliases for the same option passed: #{msg}"
350
+ overlap_list = overlap.map {|k, v| "(#{k}, #{v.sort.join(', ')})" }.join(", ")
351
+ raise ArgumentError, _("Multiple aliases for the same option passed: %{overlap_list}") %
352
+ { overlap_list: overlap_list }
336
353
  end
337
354
 
338
355
  unless unknown.empty?
339
- msg = unknown.sort.join(", ")
340
- raise ArgumentError, "Unknown options passed: #{msg}"
356
+ unknown_list = unknown.sort.join(", ")
357
+ raise ArgumentError, _("Unknown options passed: %{unknown_list}") % { unknown_list: unknown_list }
341
358
  end
342
359
 
343
360
  # Inject default arguments and check for missing mandating options.
@@ -354,8 +371,8 @@ WRAPPER
354
371
  end
355
372
 
356
373
  unless missing.empty?
357
- msg = missing.sort.join(', ')
358
- raise ArgumentError, "The following options are required: #{msg}"
374
+ missing_list = missing.sort.join(', ')
375
+ raise ArgumentError, _("The following options are required: %{missing_list}") % { missing_list: missing_list }
359
376
  end
360
377
 
361
378
  # All done.
@@ -49,10 +49,12 @@ class Puppet::Interface::ActionBuilder
49
49
  # @dsl Faces
50
50
  def when_rendering(type = nil, &block)
51
51
  if type.nil? then # the default error message sucks --daniel 2011-04-18
52
- raise ArgumentError, 'You must give a rendering format to when_rendering'
52
+ #TRANSLATORS 'when_rendering' is a method name and should not be translated
53
+ raise ArgumentError, _('You must give a rendering format to when_rendering')
53
54
  end
54
55
  if block.nil? then
55
- raise ArgumentError, 'You must give a block to when_rendering'
56
+ #TRANSLATORS 'when_rendering' is a method name and should not be translated
57
+ raise ArgumentError, _('You must give a block to when_rendering')
56
58
  end
57
59
  @action.set_rendering_method_for(type, block)
58
60
  end
@@ -111,11 +113,15 @@ class Puppet::Interface::ActionBuilder
111
113
  # Sets the default rendering format
112
114
  # @api private
113
115
  def render_as(value = nil)
114
- value.nil? and raise ArgumentError, "You must give a rendering format to render_as"
116
+ if value.nil?
117
+ #TRANSLATORS 'render_as' is a method name and should not be translated
118
+ raise ArgumentError, _("You must give a rendering format to render_as")
119
+ end
115
120
 
116
121
  formats = Puppet::Network::FormatHandler.formats
117
122
  unless formats.include? value
118
- raise ArgumentError, "#{value.inspect} is not a valid rendering format: #{formats.sort.join(", ")}"
123
+ raise ArgumentError, _("%{value} is not a valid rendering format: %{formats_list}") %
124
+ { value: value.inspect, formats_list: formats.sort.join(", ")}
119
125
  end
120
126
 
121
127
  @action.render_as = value
@@ -144,6 +150,9 @@ class Puppet::Interface::ActionBuilder
144
150
  @face = face
145
151
  @action = Puppet::Interface::Action.new(face, name)
146
152
  instance_eval(&block)
147
- @action.when_invoked or raise ArgumentError, "actions need to know what to do when_invoked; please add the block"
153
+ unless @action.when_invoked
154
+ #TRANSLATORS 'when_invoked' is a method name and should not be translated and 'block' is a Ruby code block
155
+ raise ArgumentError, _("actions need to know what to do when_invoked; please add the block")
156
+ end
148
157
  end
149
158
  end
@@ -17,7 +17,7 @@ module Puppet::Interface::ActionManager
17
17
  # @dsl Faces
18
18
  def action(name, &block)
19
19
  @actions ||= {}
20
- Puppet.warning "Redefining action #{name} for #{self}" if action?(name)
20
+ Puppet.warning _("Redefining action %{name} for %{self}") % { name: name, self: self } if action?(name)
21
21
 
22
22
  action = Puppet::Interface::ActionBuilder.build(self, name, &block)
23
23
 
@@ -56,7 +56,8 @@ class Puppet::Interface
56
56
  # @dsl Faces
57
57
  attr_doc :summary do |value|
58
58
  value =~ /\n/ and
59
- raise ArgumentError, "Face summary should be a single line; put the long text in 'description' instead."
59
+ #TRANSLATORS 'Face' refers to a programming API in Puppet, 'summary' and 'description' are specifc attribute names and should not be translated
60
+ raise ArgumentError, _("Face summary should be a single line; put the long text in 'description' instead.")
60
61
  value
61
62
  end
62
63
 
@@ -200,11 +201,13 @@ class Puppet::Interface
200
201
  def author(value = nil)
201
202
  unless value.nil? then
202
203
  unless value.is_a? String
203
- raise ArgumentError, 'author must be a string; use multiple statements for multiple authors'
204
+ #TRANSLATORS 'author' is an attribute name and should not be translated
205
+ raise ArgumentError, _('author must be a string; use multiple statements for multiple authors')
204
206
  end
205
207
 
206
208
  if value =~ /\n/ then
207
- raise ArgumentError, 'author should be a single line; use multiple statements for multiple authors'
209
+ #TRANSLATORS 'author' is an attribute name and should not be translated
210
+ raise ArgumentError, _('author should be a single line; use multiple statements for multiple authors')
208
211
  end
209
212
  @authors.push(Puppet::Interface::DocGen.strip_whitespace(value))
210
213
  end
@@ -223,7 +226,8 @@ class Puppet::Interface
223
226
  # I think it's a bug that this ends up being the exposed
224
227
  # version of `author` on ActionBuilder
225
228
  if Array(value).any? {|x| x =~ /\n/ } then
226
- raise ArgumentError, 'author should be a single line; use multiple statements'
229
+ #TRANSLATORS 'author' is an attribute name and should not be translated
230
+ raise ArgumentError, _('author should be a single line; use multiple statements')
227
231
  end
228
232
  @authors = Array(value).map{|x| Puppet::Interface::DocGen.strip_whitespace(x) }
229
233
  end
@@ -243,7 +247,8 @@ class Puppet::Interface
243
247
  # @dsl Faces
244
248
  def copyright(owner = nil, years = nil)
245
249
  if years.nil? and not owner.nil? then
246
- raise ArgumentError, 'copyright takes the owners names, then the years covered'
250
+ #TRANSLATORS 'copyright' is an attribute name and should not be translated
251
+ raise ArgumentError, _('copyright takes the owners names, then the years covered')
247
252
  end
248
253
  self.copyright_owner = owner unless owner.nil?
249
254
  self.copyright_years = years unless years.nil?
@@ -266,7 +271,8 @@ class Puppet::Interface
266
271
  when String then @copyright_owner = value
267
272
  when Array then @copyright_owner = value.join(", ")
268
273
  else
269
- raise ArgumentError, "copyright owner must be a string or an array of strings"
274
+ #TRANSLATORS 'copyright' is an attribute name and should not be translated
275
+ raise ArgumentError, _("copyright owner must be a string or an array of strings")
270
276
  end
271
277
  @copyright_owner
272
278
  end
@@ -302,7 +308,9 @@ class Puppet::Interface
302
308
  fault = "after #{future}"
303
309
  end
304
310
  if fault then
305
- raise ArgumentError, "copyright with a year #{fault} is very strange; did you accidentally add or subtract two years?"
311
+ #TRANSLATORS 'copyright' is an attribute name and should not be translated
312
+ raise ArgumentError, _("copyright with a year %{value} is very strange; did you accidentally add or subtract two years?") %
313
+ { value: fault }
306
314
  end
307
315
 
308
316
  input
@@ -314,11 +322,13 @@ class Puppet::Interface
314
322
  part.to_i
315
323
  elsif found = part.split(/-/) then
316
324
  unless found.length == 2 and found.all? {|x| x.strip =~ /^\d+$/ }
317
- raise ArgumentError, "#{part.inspect} is not a good copyright year or range"
325
+ #TRANSLATORS 'copyright' is an attribute name and should not be translated
326
+ raise ArgumentError, _("%{value} is not a good copyright year or range") % { value: part.inspect }
318
327
  end
319
328
  Range.new(found[0].to_i, found[1].to_i)
320
329
  else
321
- raise ArgumentError, "#{part.inspect} is not a good copyright year or range"
330
+ #TRANSLATORS 'copyright' is an attribute name and should not be translated
331
+ raise ArgumentError, _("%{value} is not a good copyright year or range") % { value: part.inspect }
322
332
  end
323
333
  end
324
334
 
@@ -335,7 +345,8 @@ class Puppet::Interface
335
345
  result
336
346
 
337
347
  else
338
- raise ArgumentError, "#{input.inspect} is not a good copyright year, set, or range"
348
+ #TRANSLATORS 'copyright' is an attribute name and should not be translated
349
+ raise ArgumentError, _("%{value} is not a good copyright year, set, or range") % { value: input.inspect }
339
350
  end
340
351
  end
341
352
  end