puppet 5.0.1-universal-darwin → 5.1.0-universal-darwin

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 (105) hide show
  1. checksums.yaml +4 -4
  2. data/lib/puppet/agent.rb +1 -0
  3. data/lib/puppet/defaults.rb +1 -1
  4. data/lib/puppet/functions.rb +6 -7
  5. data/lib/puppet/functions/all.rb +100 -0
  6. data/lib/puppet/functions/any.rb +105 -0
  7. data/lib/puppet/functions/defined.rb +3 -3
  8. data/lib/puppet/functions/new.rb +2 -1
  9. data/lib/puppet/functions/reduce.rb +31 -0
  10. data/lib/puppet/functions/tree_each.rb +200 -0
  11. data/lib/puppet/module.rb +30 -0
  12. data/lib/puppet/parser/functions/new.rb +67 -0
  13. data/lib/puppet/parser/functions/reduce.rb +31 -0
  14. data/lib/puppet/parser/relationship.rb +2 -2
  15. data/lib/puppet/parser/resource.rb +39 -10
  16. data/lib/puppet/parser/scope.rb +1 -1
  17. data/lib/puppet/pops/evaluator/access_operator.rb +11 -4
  18. data/lib/puppet/pops/evaluator/collector_transformer.rb +1 -1
  19. data/lib/puppet/pops/evaluator/evaluator_impl.rb +4 -4
  20. data/lib/puppet/pops/evaluator/relationship_operator.rb +1 -1
  21. data/lib/puppet/pops/evaluator/runtime3_converter.rb +3 -3
  22. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +1 -1
  23. data/lib/puppet/pops/loader/module_loaders.rb +1 -1
  24. data/lib/puppet/pops/loader/static_loader.rb +1 -2
  25. data/lib/puppet/pops/loaders.rb +1 -2
  26. data/lib/puppet/pops/lookup/context.rb +1 -1
  27. data/lib/puppet/pops/lookup/lookup_adapter.rb +2 -1
  28. data/lib/puppet/pops/model/ast.rb +440 -436
  29. data/lib/puppet/pops/model/factory.rb +140 -140
  30. data/lib/puppet/pops/pcore.rb +1 -2
  31. data/lib/puppet/pops/resource/param.rb +1 -1
  32. data/lib/puppet/pops/resource/resource_type_impl.rb +1 -1
  33. data/lib/puppet/pops/serialization/from_data_converter.rb +0 -12
  34. data/lib/puppet/pops/time/timestamp.rb +29 -17
  35. data/lib/puppet/pops/types/annotatable.rb +2 -2
  36. data/lib/puppet/pops/types/annotation.rb +8 -8
  37. data/lib/puppet/pops/types/class_loader.rb +3 -3
  38. data/lib/puppet/pops/types/implementation_registry.rb +1 -1
  39. data/lib/puppet/pops/types/iterable.rb +2 -2
  40. data/lib/puppet/pops/types/p_binary_type.rb +2 -2
  41. data/lib/puppet/pops/types/p_init_type.rb +238 -0
  42. data/lib/puppet/pops/types/p_meta_type.rb +14 -11
  43. data/lib/puppet/pops/types/p_object_type.rb +15 -15
  44. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +2 -2
  45. data/lib/puppet/pops/types/p_sem_ver_type.rb +2 -2
  46. data/lib/puppet/pops/types/p_sensitive_type.rb +2 -2
  47. data/lib/puppet/pops/types/p_timespan_type.rb +6 -6
  48. data/lib/puppet/pops/types/p_timestamp_type.rb +6 -2
  49. data/lib/puppet/pops/types/p_type_set_type.rb +10 -9
  50. data/lib/puppet/pops/types/ruby_generator.rb +6 -5
  51. data/lib/puppet/pops/types/ruby_method.rb +2 -2
  52. data/lib/puppet/pops/types/string_converter.rb +1 -1
  53. data/lib/puppet/pops/types/tree_iterators.rb +250 -0
  54. data/lib/puppet/pops/types/type_calculator.rb +13 -13
  55. data/lib/puppet/pops/types/type_factory.rb +26 -7
  56. data/lib/puppet/pops/types/type_formatter.rb +9 -4
  57. data/lib/puppet/pops/types/type_parser.rb +8 -3
  58. data/lib/puppet/pops/types/type_set_reference.rb +2 -2
  59. data/lib/puppet/pops/types/types.rb +168 -109
  60. data/lib/puppet/provider/package/gem.rb +10 -9
  61. data/lib/puppet/provider/package/pip.rb +12 -3
  62. data/lib/puppet/provider/package/yum.rb +9 -1
  63. data/lib/puppet/resource/capability_finder.rb +30 -11
  64. data/lib/puppet/type/file.rb +21 -13
  65. data/lib/puppet/util/execution.rb +67 -14
  66. data/lib/puppet/util/suidmanager.rb +1 -0
  67. data/lib/puppet/version.rb +1 -1
  68. data/locales/puppet.pot +130 -66
  69. data/man/man5/puppet.conf.5 +1 -1
  70. data/spec/fixtures/unit/provider/package/yum/yum-check-update-simple.txt +1 -0
  71. data/spec/integration/parser/collection_spec.rb +40 -1
  72. data/spec/shared_contexts/types_setup.rb +41 -2
  73. data/spec/unit/agent_spec.rb +11 -0
  74. data/spec/unit/file_bucket/dipper_spec.rb +13 -4
  75. data/spec/unit/functions/all_spec.rb +97 -0
  76. data/spec/unit/functions/any_spec.rb +109 -0
  77. data/spec/unit/functions/hiera_spec.rb +5 -0
  78. data/spec/unit/functions/new_spec.rb +66 -0
  79. data/spec/unit/functions/tree_each_spec.rb +444 -0
  80. data/spec/unit/module_spec.rb +29 -0
  81. data/spec/unit/pops/serialization/serialization_spec.rb +2 -2
  82. data/spec/unit/pops/serialization/to_from_hr_spec.rb +2 -2
  83. data/spec/unit/pops/types/iterable_spec.rb +9 -9
  84. data/spec/unit/pops/types/p_init_type_spec.rb +285 -0
  85. data/spec/unit/pops/types/p_object_type_spec.rb +8 -8
  86. data/spec/unit/pops/types/p_sensitive_type_spec.rb +4 -0
  87. data/spec/unit/pops/types/p_timespan_type_spec.rb +14 -0
  88. data/spec/unit/pops/types/p_timestamp_type_spec.rb +19 -1
  89. data/spec/unit/pops/types/p_type_set_type_spec.rb +2 -2
  90. data/spec/unit/pops/types/ruby_generator_spec.rb +9 -22
  91. data/spec/unit/pops/types/string_converter_spec.rb +2 -2
  92. data/spec/unit/pops/types/type_acceptor_spec.rb +2 -2
  93. data/spec/unit/pops/types/type_calculator_spec.rb +43 -38
  94. data/spec/unit/pops/types/type_factory_spec.rb +6 -6
  95. data/spec/unit/pops/types/type_formatter_spec.rb +6 -6
  96. data/spec/unit/pops/types/types_spec.rb +16 -4
  97. data/spec/unit/provider/package/gem_spec.rb +6 -6
  98. data/spec/unit/provider/package/pip_spec.rb +44 -23
  99. data/spec/unit/provider/package/puppet_gem_spec.rb +1 -1
  100. data/spec/unit/provider/package/yum_spec.rb +8 -0
  101. data/spec/unit/resource/capability_finder_spec.rb +4 -5
  102. data/spec/unit/type/file_spec.rb +19 -14
  103. data/spec/unit/util/execution_spec.rb +216 -82
  104. data/tasks/generate_ast_model.rake +10 -2
  105. metadata +15 -2
@@ -3,10 +3,12 @@ require 'uri'
3
3
 
4
4
  # Ruby gems support.
5
5
  Puppet::Type.type(:package).provide :gem, :parent => Puppet::Provider::Package do
6
- desc "Ruby Gem support. If a URL is passed via `source`, then that URL is used as the
7
- remote gem repository; if a source is present but is not a valid URL, it will be
8
- interpreted as the path to a local gem file. If source is not present at all,
9
- the gem will be installed from the default gem repositories.
6
+ desc "Ruby Gem support. If a URL is passed via `source`, then that URL is
7
+ appended to the list of remote gem repositories; to ensure that only the
8
+ specified source is used, also pass `--clear-sources` via `install_options`.
9
+ If source is present but is not a valid URL, it will be interpreted as the
10
+ path to a local gem file. If source is not present, the gem will be
11
+ installed from the default gem repositories.
10
12
 
11
13
  This provider supports the `install_options` and `uninstall_options` attributes,
12
14
  which allow command-line flags to be passed to the gem command.
@@ -33,7 +35,7 @@ Puppet::Type.type(:package).provide :gem, :parent => Puppet::Provider::Package d
33
35
  end
34
36
 
35
37
  begin
36
- list = execute(gem_list_command).lines.
38
+ list = execute(gem_list_command, {:failonfail => true, :combine => true, :custom_environment => {"HOME"=>ENV["HOME"]}}).lines.
37
39
  map {|set| gemsplit(set) }.
38
40
  reject {|x| x.nil? }
39
41
  rescue Puppet::ExecutionFailure => detail
@@ -92,6 +94,7 @@ Puppet::Type.type(:package).provide :gem, :parent => Puppet::Provider::Package d
92
94
 
93
95
  def install(useversion = true)
94
96
  command = [command(:gemcmd), "install"]
97
+ command += install_options if resource[:install_options]
95
98
  if Puppet.features.microsoft_windows?
96
99
  version = resource[:ensure]
97
100
  command << "-v" << %Q["#{version}"] if (! resource[:ensure].is_a? Symbol) and useversion
@@ -128,9 +131,7 @@ Puppet::Type.type(:package).provide :gem, :parent => Puppet::Provider::Package d
128
131
  command << "--no-rdoc" << "--no-ri" << resource[:name]
129
132
  end
130
133
 
131
- command += install_options if resource[:install_options]
132
-
133
- output = execute(command)
134
+ output = execute(command, {:failonfail => true, :combine => true, :custom_environment => {"HOME"=>ENV["HOME"]}})
134
135
  # Apparently some stupid gem versions don't exit non-0 on failure
135
136
  self.fail _("Could not install: %{output}") % { output: output.chomp } if output.include?("ERROR")
136
137
  end
@@ -154,7 +155,7 @@ Puppet::Type.type(:package).provide :gem, :parent => Puppet::Provider::Package d
154
155
 
155
156
  command += uninstall_options if resource[:uninstall_options]
156
157
 
157
- output = execute(command)
158
+ output = execute(command, {:failonfail => true, :combine => true, :custom_environment => {"HOME"=>ENV["HOME"]}})
158
159
 
159
160
  # Apparently some stupid gem versions don't exit non-0 on failure
160
161
  self.fail _("Could not uninstall: %{output}") % { output: output.chomp } if output.include?("ERROR")
@@ -31,7 +31,11 @@ Puppet::Type.type(:package).provide :pip,
31
31
  packages = []
32
32
  pip_cmd = self.pip_cmd
33
33
  return [] unless pip_cmd
34
- execpipe "#{pip_cmd} freeze" do |process|
34
+ command = [pip_cmd, 'freeze']
35
+ if Puppet::Util::Package.versioncmp(self.pip_version, '8.1.0') >= 0 # a >= b
36
+ command << '--all'
37
+ end
38
+ execpipe command do |process|
35
39
  process.collect do |line|
36
40
  next unless options = parse(line)
37
41
  packages << new(options)
@@ -40,7 +44,8 @@ Puppet::Type.type(:package).provide :pip,
40
44
 
41
45
  # Pip can also upgrade pip, but it's not listed in freeze so need to special case it
42
46
  # Pip list would also show pip installed version, but "pip list" doesn't exist for older versions of pip (E.G v1.0)
43
- if version = self.pip_version
47
+ # Not needed when "pip freeze --all" is available
48
+ if Puppet::Util::Package.versioncmp(self.pip_version, '8.1.0') == -1 && version = self.pip_version
44
49
  packages << new({:ensure => version, :name => File.basename(pip_cmd), :provider => name})
45
50
  end
46
51
 
@@ -48,7 +53,11 @@ Puppet::Type.type(:package).provide :pip,
48
53
  end
49
54
 
50
55
  def self.cmd
51
- ["pip", "pip-python"]
56
+ if Puppet.features.microsoft_windows?
57
+ ["pip.exe"]
58
+ else
59
+ ["pip", "pip-python"]
60
+ end
52
61
  end
53
62
 
54
63
  def self.pip_cmd
@@ -106,7 +106,15 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do
106
106
  end
107
107
 
108
108
  def self.update_to_hash(pkgname, pkgversion)
109
- name, arch = pkgname.split('.')
109
+
110
+ # The pkgname string has two parts: name, and architecture. Architecture
111
+ # is the portion of the string following the last "." character. All
112
+ # characters preceding the final dot are the package name. Parse out
113
+ # these two pieces of component data.
114
+ name, _, arch = pkgname.rpartition('.')
115
+ if name.empty?
116
+ raise _("Failed to parse package name and architecture from '%{pkgname}'") % { pkgname: pkgname }
117
+ end
110
118
 
111
119
  match = pkgversion.match(/^(?:(\d+):)?(\S+)-(\S+)$/)
112
120
  epoch = match[1] || '0'
@@ -19,7 +19,7 @@ module Puppet::Resource::CapabilityFinder
19
19
  #
20
20
  # @param environment [String] environment name
21
21
  # @param code_id [String,nil] code_id of the catalog
22
- # @param cap [Puppet::Type] the capability resource type instance
22
+ # @param cap [Puppet::Resource] the capability resource type instance
23
23
  # @return [Puppet::Resource,nil] The found capability resource or `nil` if it could not be found
24
24
  def self.find(environment, code_id, cap)
25
25
  unless Puppet::Util.const_defined?('Puppetdb')
@@ -33,24 +33,22 @@ module Puppet::Resource::CapabilityFinder
33
33
  resources = resources.select { |r| r['tags'].any? { |t| t == "producer:#{environment}" } }
34
34
  end
35
35
 
36
- if resources.size > 1 && code_id
37
- Puppet.debug "Found multiple resources when looking up capability #{cap}, filtering by code id #{code_id}"
38
- resources = search(environment, code_id, cap)
39
- end
40
-
41
- if resources.size > 1
36
+ if resources.empty?
37
+ Puppet.debug "Could not find capability resource #{cap} in PuppetDB"
38
+ elsif resources.size == 1
39
+ resource_hash = resources.first
40
+ elsif code_id_resource = disambiguate_by_code_id(environment, code_id, cap)
41
+ resource_hash = code_id_resource
42
+ else
42
43
  raise Puppet::DevError,
43
44
  "Unexpected response from PuppetDB when looking up #{cap}:\n" \
44
45
  "expected exactly one resource but got #{resources.size};\n" \
45
46
  "returned data is:\n#{resources.inspect}"
46
47
  end
47
48
 
48
- if resource_hash = resources.first
49
+ if resource_hash
49
50
  resource_hash['type'] = cap.resource_type
50
51
  instantiate_resource(resource_hash)
51
- else
52
- Puppet.debug "Could not find capability resource #{cap} in PuppetDB"
53
- nil
54
52
  end
55
53
  end
56
54
 
@@ -111,6 +109,27 @@ module Puppet::Resource::CapabilityFinder
111
109
 
112
110
  private
113
111
 
112
+ # Find a distinct copy of the given capability resource by searching for only
113
+ # resources matching the given code_id. Returns `nil` if no code_id is
114
+ # supplied or if there isn't exactly one matching resource.
115
+ #
116
+ # @param environment [String] environment name
117
+ # @param code_id [String,nil] code_id of the catalog
118
+ # @param cap [Puppet::Resource] the capability resource type instance
119
+ def self.disambiguate_by_code_id(environment, code_id, cap)
120
+ if code_id
121
+ Puppet.debug "Found multiple resources when looking up capability #{cap}, filtering by code id #{code_id}"
122
+ resources = search(environment, code_id, cap)
123
+
124
+ if resources.size > 1
125
+ Puppet.debug "Found multiple resources matching code id #{code_id} when looking up #{cap}"
126
+ nil
127
+ else
128
+ resources.first
129
+ end
130
+ end
131
+ end
132
+
114
133
  def self.instantiate_resource(resource_hash)
115
134
  real_type = resource_hash['type']
116
135
  resource = Puppet::Resource.new(real_type, resource_hash['title'])
@@ -714,7 +714,7 @@ Puppet::Type.newtype(:file) do
714
714
  #
715
715
  # @param [Symbol] should The file type replacing the current content.
716
716
  # @return [Boolean] True if the file was removed, else False
717
- # @raises [fail???] If the current file isn't one of %w{file link directory} and can't be removed.
717
+ # @raises [fail???] If the file could not be backed up or could not be removed.
718
718
  def remove_existing(should)
719
719
  wanted_type = should.to_s
720
720
  current_type = read_current_type
@@ -723,8 +723,12 @@ Puppet::Type.newtype(:file) do
723
723
  return false
724
724
  end
725
725
 
726
- if can_backup?(current_type)
727
- backup_existing
726
+ if self[:backup]
727
+ if can_backup?(current_type)
728
+ backup_existing
729
+ else
730
+ self.warning "Could not back up file of type #{current_type}"
731
+ end
728
732
  end
729
733
 
730
734
  if wanted_type != "link" and current_type == wanted_type
@@ -734,10 +738,11 @@ Puppet::Type.newtype(:file) do
734
738
  case current_type
735
739
  when "directory"
736
740
  return remove_directory(wanted_type)
737
- when "link", "file"
741
+ when "link", "file", "fifo", "socket"
738
742
  return remove_file(current_type, wanted_type)
739
743
  else
740
- self.fail _("Could not back up files of type %{current_type}") % { current_type: current_type }
744
+ # Including: “blockSpecial”, “characterSpecial”, “unknown”
745
+ self.fail _("Could not remove files of type %{current_type}") % { current_type: current_type }
741
746
  end
742
747
  end
743
748
 
@@ -930,18 +935,21 @@ Puppet::Type.newtype(:file) do
930
935
  end
931
936
  end
932
937
 
933
- # @return [Boolean] If the current file can be backed up and needs to be backed up.
938
+ # @return [Boolean] If the current file should be backed up and can be backed up.
934
939
  def can_backup?(type)
935
- if type == "directory" and not force?
936
- # (#18110) Directories cannot be removed without :force, so it doesn't
937
- # make sense to back them up.
938
- false
939
- else
940
+ if type == "directory" and force?
941
+ # (#18110) Directories cannot be removed without :force,
942
+ # so it doesn't make sense to back them up unless removing with :force.
940
943
  true
944
+ elsif type == "file" or type == "link"
945
+ true
946
+ else
947
+ # Including: “blockSpecial”, “characterSpecial”, "fifo", "socket", “unknown”
948
+ false
941
949
  end
942
950
  end
943
951
 
944
- # @return [Boolean] True if the directory was removed
952
+ # @return [Boolean] if the directory was removed (which is always true currently)
945
953
  # @api private
946
954
  def remove_directory(wanted_type)
947
955
  if force?
@@ -975,7 +983,7 @@ Puppet::Type.newtype(:file) do
975
983
  def backup_existing
976
984
  unless perform_backup
977
985
  #TRANSLATORS refers to a file which could not be backed up
978
- raise Puppet::Error, _("Could not back up; will not replace")
986
+ raise Puppet::Error, _("Could not back up; will not remove")
979
987
  end
980
988
  end
981
989
 
@@ -188,18 +188,69 @@ module Puppet::Util::Execution
188
188
 
189
189
  begin
190
190
  stdin = Puppet::FileSystem.open(options[:stdinfile] || null_file, nil, 'r')
191
- stdout = options[:squelch] ? Puppet::FileSystem.open(null_file, nil, 'w') : Puppet::FileSystem::Uniquefile.new('puppet')
191
+ # On Windows, continue to use the file-based approach to avoid breaking people's existing
192
+ # manifests. If they use a script that doesn't background cleanly, such as
193
+ # `start /b ping 127.0.0.1`, we couldn't handle it with pipes as there's no non-blocking
194
+ # read available.
195
+ if options[:squelch]
196
+ stdout = Puppet::FileSystem.open(null_file, nil, 'w')
197
+ elsif Puppet.features.posix?
198
+ reader, stdout = IO.pipe
199
+ else
200
+ stdout = Puppet::FileSystem::Uniquefile.new('puppet')
201
+ end
192
202
  stderr = options[:combine] ? stdout : Puppet::FileSystem.open(null_file, nil, 'w')
193
203
 
194
204
  exec_args = [command, options, stdin, stdout, stderr]
205
+ output = ''
195
206
 
207
+ # We close stdin/stdout/stderr immediately after fork/exec as they're no longer needed by
208
+ # this process. In most cases they could be closed later, but when `stdout` is the "writer"
209
+ # pipe we must close it or we'll never reach eof on the `reader` pipe.
196
210
  if execution_stub = Puppet::Util::ExecutionStub.current_value
197
- return execution_stub.call(*exec_args)
211
+ child_pid = execution_stub.call(*exec_args)
212
+ [stdin, stdout, stderr].each {|io| io.close rescue nil}
213
+ return child_pid
198
214
  elsif Puppet.features.posix?
199
215
  child_pid = nil
200
216
  begin
201
217
  child_pid = execute_posix(*exec_args)
202
- exit_status = Process.waitpid2(child_pid).last.exitstatus
218
+ [stdin, stdout, stderr].each {|io| io.close rescue nil}
219
+ if options[:squelch]
220
+ exit_status = Process.waitpid2(child_pid).last.exitstatus
221
+ else
222
+ # Use non-blocking read to check for data. After each attempt,
223
+ # check whether the child is done. This is done in case the child
224
+ # forks and inherits stdout, as happens in `foo &`.
225
+ until results = Process.waitpid2(child_pid, Process::WNOHANG)
226
+
227
+ # If not done, wait for data to read with a timeout
228
+ # This timeout is selected to keep activity low while waiting on
229
+ # a long process, while not waiting too long for the pathological
230
+ # case where stdout is never closed.
231
+ ready = IO.select([reader], [], [], 0.1)
232
+ begin
233
+ output << reader.read_nonblock(4096) if ready
234
+ rescue Errno::EAGAIN
235
+ rescue EOFError
236
+ end
237
+ end
238
+
239
+ # Read any remaining data. Allow for but don't expect EOF.
240
+ begin
241
+ loop do
242
+ output << reader.read_nonblock(4096)
243
+ end
244
+ rescue Errno::EAGAIN
245
+ rescue EOFError
246
+ end
247
+
248
+ # Force to external encoding to preserve prior behavior when reading a file.
249
+ # Wait until after reading all data so we don't encounter corruption when
250
+ # reading part of a multi-byte unicode character if default_external is UTF-8.
251
+ output.force_encoding(Encoding.default_external)
252
+ exit_status = results.last.exitstatus
253
+ end
203
254
  child_pid = nil
204
255
  rescue Timeout::Error => e
205
256
  # NOTE: For Ruby 2.1+, an explicit Timeout::Error class has to be
@@ -216,28 +267,30 @@ module Puppet::Util::Execution
216
267
  elsif Puppet.features.microsoft_windows?
217
268
  process_info = execute_windows(*exec_args)
218
269
  begin
270
+ [stdin, stderr].each {|io| io.close rescue nil}
219
271
  exit_status = Puppet::Util::Windows::Process.wait_process(process_info.process_handle)
272
+
273
+ # read output in if required
274
+ unless options[:squelch]
275
+ output = wait_for_output(stdout)
276
+ Puppet.warning _("Could not get output") unless output
277
+ end
220
278
  ensure
221
279
  FFI::WIN32.CloseHandle(process_info.process_handle)
222
280
  FFI::WIN32.CloseHandle(process_info.thread_handle)
223
281
  end
224
282
  end
225
283
 
226
- [stdin, stdout, stderr].each {|io| io.close rescue nil}
227
-
228
- # read output in if required
229
- unless options[:squelch]
230
- output = wait_for_output(stdout)
231
- Puppet.warning _("Could not get output") unless output
232
- end
233
-
234
284
  if options[:failonfail] and exit_status != 0
235
285
  raise Puppet::ExecutionFailure, _("Execution of '%{str}' returned %{exit_status}: %{output}") % { str: command_str, exit_status: exit_status, output: output.strip }
236
286
  end
237
287
  ensure
238
- if !options[:squelch] && stdout
239
- # if we opened a temp file for stdout, we need to clean it up.
240
- stdout.close!
288
+ # Make sure all handles are closed in case an exception was thrown attempting to execute.
289
+ [stdin, stdout, stderr].each {|io| io.close rescue nil}
290
+ if !options[:squelch]
291
+ # if we opened a pipe, we need to clean it up.
292
+ reader.close if reader
293
+ stdout.close! if Puppet.features.microsoft_windows?
241
294
  end
242
295
  end
243
296
 
@@ -141,6 +141,7 @@ module Puppet::Util::SUIDManager
141
141
 
142
142
  # Make sure the passed argument is a number.
143
143
  def convert_xid(type, id)
144
+ return id if id.kind_of? Integer
144
145
  map = {:gid => :group, :uid => :user}
145
146
  raise ArgumentError, _("Invalid id type %{type}") % { type: type } unless map.include?(type)
146
147
  ret = Puppet::Util.send(type, id)
@@ -6,7 +6,7 @@
6
6
  # Raketasks and such to set the version based on the output of `git describe`
7
7
 
8
8
  module Puppet
9
- PUPPETVERSION = '5.0.1'
9
+ PUPPETVERSION = '5.1.0'
10
10
 
11
11
  ##
12
12
  # version is a public API method intended to always provide a fast and
data/locales/puppet.pot CHANGED
@@ -6,11 +6,11 @@
6
6
  #, fuzzy
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: Puppet automation framework 5.0.0-77-g7f53ea2\n"
9
+ "Project-Id-Version: Puppet automation framework 5.0.1-184-gc50f87a\n"
10
10
  "\n"
11
11
  "Report-Msgid-Bugs-To: https://tickets.puppetlabs.com\n"
12
- "POT-Creation-Date: 2017-07-14 22:07+0000\n"
13
- "PO-Revision-Date: 2017-07-14 22:07+0000\n"
12
+ "POT-Creation-Date: 2017-08-01 23:58+0000\n"
13
+ "PO-Revision-Date: 2017-08-01 23:58+0000\n"
14
14
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
15
15
  "Language-Team: LANGUAGE <LL@li.org>\n"
16
16
  "Language: \n"
@@ -49,15 +49,15 @@ msgstr ""
49
49
  msgid "Could not run %{client_class}: %{detail}"
50
50
  msgstr ""
51
51
 
52
- #: ../lib/puppet/agent.rb:57
52
+ #: ../lib/puppet/agent.rb:58
53
53
  msgid "Shutdown/restart in progress (%{status}); skipping run"
54
54
  msgstr ""
55
55
 
56
- #: ../lib/puppet/agent.rb:75
56
+ #: ../lib/puppet/agent.rb:76
57
57
  msgid "puppet agent: applying configuration"
58
58
  msgstr ""
59
59
 
60
- #: ../lib/puppet/agent.rb:106
60
+ #: ../lib/puppet/agent.rb:107
61
61
  msgid "Could not create instance of %{client_class}: %{detail}"
62
62
  msgstr ""
63
63
 
@@ -1778,51 +1778,51 @@ msgstr ""
1778
1778
  msgid "No loader present. Call create_loaded_function(:myname, loader,...), instead of 'create_function' if running tests"
1779
1779
  msgstr ""
1780
1780
 
1781
- #: ../lib/puppet/functions.rb:410
1781
+ #: ../lib/puppet/functions.rb:409
1782
1782
  msgid "A required parameter cannot be added after an optional parameter"
1783
1783
  msgstr ""
1784
1784
 
1785
- #: ../lib/puppet/functions.rb:459
1785
+ #: ../lib/puppet/functions.rb:458
1786
1786
  msgid "A required repeated parameter cannot be added after an optional parameter"
1787
1787
  msgstr ""
1788
1788
 
1789
- #: ../lib/puppet/functions.rb:481
1789
+ #: ../lib/puppet/functions.rb:480
1790
1790
  msgid "block_param accepts max 2 arguments (type, name), got %{size}."
1791
1791
  msgstr ""
1792
1792
 
1793
- #: ../lib/puppet/functions.rb:485
1793
+ #: ../lib/puppet/functions.rb:484
1794
1794
  msgid "Expected PCallableType or PVariantType thereof, got %{type_class}"
1795
1795
  msgstr ""
1796
1796
 
1797
- #: ../lib/puppet/functions.rb:489
1797
+ #: ../lib/puppet/functions.rb:488
1798
1798
  msgid "Expected block_param name to be a Symbol, got %{name_class}"
1799
1799
  msgstr ""
1800
1800
 
1801
- #: ../lib/puppet/functions.rb:496
1801
+ #: ../lib/puppet/functions.rb:495
1802
1802
  msgid "Attempt to redefine block"
1803
1803
  msgstr ""
1804
1804
 
1805
- #: ../lib/puppet/functions.rb:517
1805
+ #: ../lib/puppet/functions.rb:516
1806
1806
  msgid "Argument to 'return_type' must be a String reference to a Puppet Data Type. Got %{type_class}"
1807
1807
  msgstr ""
1808
1808
 
1809
- #: ../lib/puppet/functions.rb:525
1809
+ #: ../lib/puppet/functions.rb:524
1810
1810
  msgid "Parameters cannot be added after a block parameter"
1811
1811
  msgstr ""
1812
1812
 
1813
- #: ../lib/puppet/functions.rb:526
1813
+ #: ../lib/puppet/functions.rb:525
1814
1814
  msgid "Parameters cannot be added after a repeated parameter"
1815
1815
  msgstr ""
1816
1816
 
1817
- #: ../lib/puppet/functions.rb:529
1817
+ #: ../lib/puppet/functions.rb:528
1818
1818
  msgid "Parameter name argument must be a Symbol. Got %{name_class}"
1819
1819
  msgstr ""
1820
1820
 
1821
- #: ../lib/puppet/functions.rb:542
1821
+ #: ../lib/puppet/functions.rb:541
1822
1822
  msgid "Parameter 'type' must be a String reference to a Puppet Data Type. Got %{type_class}"
1823
1823
  msgstr ""
1824
1824
 
1825
- #: ../lib/puppet/functions.rb:607
1825
+ #: ../lib/puppet/functions.rb:606
1826
1826
  msgid "Expected a type alias assignment on the form 'AliasType = T', got '%{assignment_string}'"
1827
1827
  msgstr ""
1828
1828
 
@@ -2502,6 +2502,14 @@ msgstr ""
2502
2502
  msgid "VersionRanges will always be strict when using non-vendored SemanticPuppet gem, version %{version}"
2503
2503
  msgstr ""
2504
2504
 
2505
+ #: ../lib/puppet/module.rb:104
2506
+ msgid "GettextSetup initialization for %{module_name} failed with: %{error_message}"
2507
+ msgstr ""
2508
+
2509
+ #: ../lib/puppet/module.rb:107
2510
+ msgid "GettextSetup is not available, skipping GettextSetup initialization for %{module_name}."
2511
+ msgstr ""
2512
+
2505
2513
  #: ../lib/puppet/module_tool.rb:37
2506
2514
  msgid "Not a valid full name: %{full_module_name}"
2507
2515
  msgstr ""
@@ -3666,27 +3674,59 @@ msgstr ""
3666
3674
  msgid "Only subclasses can override parameters"
3667
3675
  msgstr ""
3668
3676
 
3669
- #: ../lib/puppet/parser/resource.rb:254
3677
+ #: ../lib/puppet/parser/resource.rb:174
3678
+ msgid "Attempt to override an already evaluated resource%{location} with new values"
3679
+ msgstr ""
3680
+
3681
+ #: ../lib/puppet/parser/resource.rb:175
3682
+ msgid ", defined"
3683
+ msgstr ""
3684
+
3685
+ #: ../lib/puppet/parser/resource.rb:266
3670
3686
  msgid "Invalid consume in %{value0}: %{ref} is not a resource"
3671
3687
  msgstr ""
3672
3688
 
3673
- #: ../lib/puppet/parser/resource.rb:261
3689
+ #: ../lib/puppet/parser/resource.rb:273
3674
3690
  msgid "Resource %{ref} could not be found; it might not have been produced yet"
3675
3691
  msgstr ""
3676
3692
 
3677
- #: ../lib/puppet/parser/resource.rb:265
3693
+ #: ../lib/puppet/parser/resource.rb:277
3678
3694
  msgid "Invalid consume in %{ref}: %{cap} is not a capability resource"
3679
3695
  msgstr ""
3680
3696
 
3681
- #: ../lib/puppet/parser/resource.rb:274
3697
+ #: ../lib/puppet/parser/resource.rb:286
3682
3698
  msgid "Resource %{res} tries to consume %{cns} but no 'consumes' mapping exists for %{resource_type} and %{cns_type}"
3683
3699
  msgstr ""
3684
3700
 
3685
- #: ../lib/puppet/parser/resource.rb:293
3701
+ #: ../lib/puppet/parser/resource.rb:305
3686
3702
  msgid "Attempt to reassign attribute '%{name}' in '%{resource}' caused by multiple consumed mappings to the same attribute"
3687
3703
  msgstr ""
3688
3704
 
3689
- #: ../lib/puppet/parser/resource.rb:384
3705
+ #: ../lib/puppet/parser/resource.rb:336
3706
+ msgid "%{prefix} at %{file}:%{line}%{suffix}"
3707
+ msgstr ""
3708
+
3709
+ #: ../lib/puppet/parser/resource.rb:338
3710
+ msgid "%{prefix} in %{file}%{suffix}"
3711
+ msgstr ""
3712
+
3713
+ #: ../lib/puppet/parser/resource.rb:341
3714
+ msgid "%{prefix} at line %{line}%{suffix}"
3715
+ msgstr ""
3716
+
3717
+ #: ../lib/puppet/parser/resource.rb:374
3718
+ msgid "Parameter '%{name}' is already set on %{resource}"
3719
+ msgstr ""
3720
+
3721
+ #: ../lib/puppet/parser/resource.rb:375
3722
+ msgid " by %{source}"
3723
+ msgstr ""
3724
+
3725
+ #: ../lib/puppet/parser/resource.rb:377
3726
+ msgid "; cannot redefine"
3727
+ msgstr ""
3728
+
3729
+ #: ../lib/puppet/parser/resource.rb:413
3690
3730
  msgid "Duplicate parameter '%{param}' for on %{resource}"
3691
3731
  msgstr ""
3692
3732
 
@@ -4621,7 +4661,7 @@ msgstr ""
4621
4661
  msgid "Attempt to redefine already initialized loaders for environment"
4622
4662
  msgstr ""
4623
4663
 
4624
- #: ../lib/puppet/pops/loaders.rb:170
4664
+ #: ../lib/puppet/pops/loaders.rb:169
4625
4665
  msgid "Unable to find loader named '%{loader_name}'"
4626
4666
  msgstr ""
4627
4667
 
@@ -4663,47 +4703,47 @@ msgstr ""
4663
4703
  msgid "Recursive lookup detected in [%{name_stack}]"
4664
4704
  msgstr ""
4665
4705
 
4666
- #: ../lib/puppet/pops/lookup/lookup_adapter.rb:93
4706
+ #: ../lib/puppet/pops/lookup/lookup_adapter.rb:94
4667
4707
  msgid "Lookup of key '%{key}' failed: %{detail}"
4668
4708
  msgstr ""
4669
4709
 
4670
- #: ../lib/puppet/pops/lookup/lookup_adapter.rb:239
4710
+ #: ../lib/puppet/pops/lookup/lookup_adapter.rb:240
4671
4711
  msgid "value of %{opts} must be a hash"
4672
4712
  msgstr ""
4673
4713
 
4674
- #: ../lib/puppet/pops/lookup/lookup_adapter.rb:246
4714
+ #: ../lib/puppet/pops/lookup/lookup_adapter.rb:247
4675
4715
  msgid "all %{opts} patterns must match a key starting with module name '%{module_name}'"
4676
4716
  msgstr ""
4677
4717
 
4678
- #: ../lib/puppet/pops/lookup/lookup_adapter.rb:250
4718
+ #: ../lib/puppet/pops/lookup/lookup_adapter.rb:251
4679
4719
  msgid "all %{opts} keys must start with module name '%{module_name}'"
4680
4720
  msgstr ""
4681
4721
 
4682
- #: ../lib/puppet/pops/lookup/lookup_adapter.rb:375
4722
+ #: ../lib/puppet/pops/lookup/lookup_adapter.rb:376
4683
4723
  msgid "Defining \"data_provider\": \"%{name}\" in metadata.json is deprecated. It is ignored since a '%{config}' with version >= 5 is present"
4684
4724
  msgstr ""
4685
4725
 
4686
- #: ../lib/puppet/pops/lookup/lookup_adapter.rb:385
4726
+ #: ../lib/puppet/pops/lookup/lookup_adapter.rb:386
4687
4727
  msgid "Defining \"data_provider\": \"%{name}\" in metadata.json is deprecated"
4688
4728
  msgstr ""
4689
4729
 
4690
- #: ../lib/puppet/pops/lookup/lookup_adapter.rb:386 ../lib/puppet/pops/lookup/lookup_adapter.rb:440
4730
+ #: ../lib/puppet/pops/lookup/lookup_adapter.rb:387 ../lib/puppet/pops/lookup/lookup_adapter.rb:441
4691
4731
  msgid ". A '%{config}' file should be used instead"
4692
4732
  msgstr ""
4693
4733
 
4694
- #: ../lib/puppet/pops/lookup/lookup_adapter.rb:400
4734
+ #: ../lib/puppet/pops/lookup/lookup_adapter.rb:401
4695
4735
  msgid "Environment '%{env}', cannot find module_data_provider '%{provider}'"
4696
4736
  msgstr ""
4697
4737
 
4698
- #: ../lib/puppet/pops/lookup/lookup_adapter.rb:424 ../lib/puppet/pops/lookup/lookup_adapter.rb:439
4738
+ #: ../lib/puppet/pops/lookup/lookup_adapter.rb:425 ../lib/puppet/pops/lookup/lookup_adapter.rb:440
4699
4739
  msgid "Defining environment_data_provider='%{provider_name}' in environment.conf is deprecated"
4700
4740
  msgstr ""
4701
4741
 
4702
- #: ../lib/puppet/pops/lookup/lookup_adapter.rb:428
4742
+ #: ../lib/puppet/pops/lookup/lookup_adapter.rb:429
4703
4743
  msgid "The environment_data_provider='%{provider_name}' setting is ignored since '%{config_path}' version >= 5"
4704
4744
  msgstr ""
4705
4745
 
4706
- #: ../lib/puppet/pops/lookup/lookup_adapter.rb:455
4746
+ #: ../lib/puppet/pops/lookup/lookup_adapter.rb:456
4707
4747
  msgid "Environment '%{env}', cannot find environment_data_provider '%{provider}'"
4708
4748
  msgstr ""
4709
4749
 
@@ -4751,7 +4791,7 @@ msgstr ""
4751
4791
  msgid "Integer out of bounds"
4752
4792
  msgstr ""
4753
4793
 
4754
- #: ../lib/puppet/pops/serialization/deserializer.rb:46 ../lib/puppet/pops/serialization/from_data_converter.rb:82 ../lib/puppet/pops/serialization/from_data_converter.rb:174
4794
+ #: ../lib/puppet/pops/serialization/deserializer.rb:46 ../lib/puppet/pops/serialization/from_data_converter.rb:82
4755
4795
  msgid "No implementation mapping found for Puppet Type %{type_name}"
4756
4796
  msgstr ""
4757
4797
 
@@ -4803,7 +4843,7 @@ msgstr ""
4803
4843
  msgid "No Puppet Type found for %{klass}"
4804
4844
  msgstr ""
4805
4845
 
4806
- #: ../lib/puppet/pops/time/timespan.rb:112 ../lib/puppet/pops/time/timestamp.rb:81
4846
+ #: ../lib/puppet/pops/time/timespan.rb:112 ../lib/puppet/pops/time/timestamp.rb:83
4807
4847
  msgid "Unable to parse '%{str}' using any of the formats %{formats}"
4808
4848
  msgstr ""
4809
4849
 
@@ -4847,19 +4887,19 @@ msgstr ""
4847
4887
  msgid "Illegal timezone '%{timezone}'"
4848
4888
  msgstr ""
4849
4889
 
4850
- #: ../lib/puppet/pops/time/timestamp.rb:87
4890
+ #: ../lib/puppet/pops/time/timestamp.rb:89
4851
4891
  msgid "Unable to parse '%{str}' using format '%{format}'"
4852
4892
  msgstr ""
4853
4893
 
4854
- #: ../lib/puppet/pops/time/timestamp.rb:97
4894
+ #: ../lib/puppet/pops/time/timestamp.rb:92
4855
4895
  msgid "Using a Timezone designator in format specification is mutually exclusive to providing an explicit timezone argument"
4856
4896
  msgstr ""
4857
4897
 
4858
- #: ../lib/puppet/pops/time/timestamp.rb:116
4898
+ #: ../lib/puppet/pops/time/timestamp.rb:128
4859
4899
  msgid "%{klass} cannot be added to a Timestamp"
4860
4900
  msgstr ""
4861
4901
 
4862
- #: ../lib/puppet/pops/time/timestamp.rb:131
4902
+ #: ../lib/puppet/pops/time/timestamp.rb:143
4863
4903
  msgid "%{klass} cannot be subtracted from a Timestamp"
4864
4904
  msgstr ""
4865
4905
 
@@ -4871,6 +4911,26 @@ msgstr ""
4871
4911
  msgid "The given string in encoding '%{enc}' is invalid. Cannot create a Binary UTF-8 representation"
4872
4912
  msgstr ""
4873
4913
 
4914
+ #: ../lib/puppet/pops/types/p_init_type.rb:26
4915
+ msgid "Init cannot be parameterized with an undefined type and additional arguments"
4916
+ msgstr ""
4917
+
4918
+ #: ../lib/puppet/pops/types/p_init_type.rb:157
4919
+ msgid "Creation of new instance of type '%{type_name}' is not supported"
4920
+ msgstr ""
4921
+
4922
+ #: ../lib/puppet/pops/types/p_init_type.rb:184
4923
+ msgid "The type '%{type}' does not represent a valid set of parameters for %{subject}.new()"
4924
+ msgstr ""
4925
+
4926
+ #: ../lib/puppet/pops/types/tree_iterators.rb:38
4927
+ msgid "Only Array, Hash, and Object types can be used as container types. Got %{type}"
4928
+ msgstr ""
4929
+
4930
+ #: ../lib/puppet/pops/types/tree_iterators.rb:45
4931
+ msgid "Options 'include_containers' and 'include_values' cannot both be false"
4932
+ msgstr ""
4933
+
4874
4934
  #: ../lib/puppet/property/ensure.rb:53
4875
4935
  msgid "created"
4876
4936
  msgstr ""
@@ -5247,7 +5307,7 @@ msgstr ""
5247
5307
  msgid "No responsefile specified or non existent, not preseeding anything"
5248
5308
  msgstr ""
5249
5309
 
5250
- #: ../lib/puppet/provider/package/aptitude.rb:21 ../lib/puppet/provider/package/ports.rb:20 ../lib/puppet/provider/package/portupgrade.rb:93 ../lib/puppet/provider/package/portupgrade.rb:151 ../lib/puppet/provider/package/rug.rb:28 ../lib/puppet/provider/package/up2date.rb:17 ../lib/puppet/provider/package/yum.rb:205 ../lib/puppet/provider/package/zypper.rb:109
5310
+ #: ../lib/puppet/provider/package/aptitude.rb:21 ../lib/puppet/provider/package/ports.rb:20 ../lib/puppet/provider/package/portupgrade.rb:93 ../lib/puppet/provider/package/portupgrade.rb:151 ../lib/puppet/provider/package/rug.rb:28 ../lib/puppet/provider/package/up2date.rb:17 ../lib/puppet/provider/package/yum.rb:213 ../lib/puppet/provider/package/zypper.rb:109
5251
5311
  msgid "Could not find package %{name}"
5252
5312
  msgstr ""
5253
5313
 
@@ -5287,27 +5347,27 @@ msgstr ""
5287
5347
  msgid "source is defined but does not have trailing slash, ignoring %{source}"
5288
5348
  msgstr ""
5289
5349
 
5290
- #: ../lib/puppet/provider/package/gem.rb:40
5350
+ #: ../lib/puppet/provider/package/gem.rb:42
5291
5351
  msgid "Could not list gems: %{detail}"
5292
5352
  msgstr ""
5293
5353
 
5294
- #: ../lib/puppet/provider/package/gem.rb:66
5354
+ #: ../lib/puppet/provider/package/gem.rb:68
5295
5355
  msgid "Could not match %{desc}"
5296
5356
  msgstr ""
5297
5357
 
5298
- #: ../lib/puppet/provider/package/gem.rb:106
5358
+ #: ../lib/puppet/provider/package/gem.rb:109
5299
5359
  msgid "Invalid source '%{uri}': %{detail}"
5300
5360
  msgstr ""
5301
5361
 
5302
- #: ../lib/puppet/provider/package/gem.rb:117
5362
+ #: ../lib/puppet/provider/package/gem.rb:120
5303
5363
  msgid "puppet:// URLs are not supported as gem sources"
5304
5364
  msgstr ""
5305
5365
 
5306
- #: ../lib/puppet/provider/package/gem.rb:135
5366
+ #: ../lib/puppet/provider/package/gem.rb:136
5307
5367
  msgid "Could not install: %{output}"
5308
5368
  msgstr ""
5309
5369
 
5310
- #: ../lib/puppet/provider/package/gem.rb:160
5370
+ #: ../lib/puppet/provider/package/gem.rb:161
5311
5371
  msgid "Could not uninstall: %{output}"
5312
5372
  msgstr ""
5313
5373
 
@@ -5568,11 +5628,15 @@ msgstr ""
5568
5628
  msgid "Could not check for updates, '%{cmd} check-update' exited with %{status}"
5569
5629
  msgstr ""
5570
5630
 
5571
- #: ../lib/puppet/provider/package/yum.rb:199
5631
+ #: ../lib/puppet/provider/package/yum.rb:116
5632
+ msgid "Failed to parse package name and architecture from '%{pkgname}'"
5633
+ msgstr ""
5634
+
5635
+ #: ../lib/puppet/provider/package/yum.rb:207
5572
5636
  msgid "Could not find package %{wanted}"
5573
5637
  msgstr ""
5574
5638
 
5575
- #: ../lib/puppet/provider/package/yum.rb:210
5639
+ #: ../lib/puppet/provider/package/yum.rb:218
5576
5640
  msgid "Failed to update to version %{should}, got version %{version} instead"
5577
5641
  msgstr ""
5578
5642
 
@@ -5666,7 +5730,7 @@ msgstr ""
5666
5730
  msgid "No set of title patterns matched the title \"%{title}\"."
5667
5731
  msgstr ""
5668
5732
 
5669
- #: ../lib/puppet/resource/capability_finder.rb:77
5733
+ #: ../lib/puppet/resource/capability_finder.rb:75
5670
5734
  msgid "Looking up capability %{cap} in PuppetDB: %{query_terms}"
5671
5735
  msgstr ""
5672
5736
 
@@ -6491,29 +6555,29 @@ msgstr ""
6491
6555
  msgid "Could not find filebucket %{backup} specified in backup"
6492
6556
  msgstr ""
6493
6557
 
6494
- #: ../lib/puppet/type/file.rb:740
6495
- msgid "Could not back up files of type %{current_type}"
6558
+ #: ../lib/puppet/type/file.rb:745
6559
+ msgid "Could not remove files of type %{current_type}"
6496
6560
  msgstr ""
6497
6561
 
6498
- #: ../lib/puppet/type/file.rb:750
6562
+ #: ../lib/puppet/type/file.rb:755
6499
6563
  msgid "Copying owner/mode/group from the source file on Windows is not supported; use source_permissions => ignore."
6500
6564
  msgstr ""
6501
6565
 
6502
6566
  #. TRANSLATORS "stat" is a program name and should not be translated
6503
- #: ../lib/puppet/type/file.rb:831 ../lib/puppet/type/tidy.rb:332
6567
+ #: ../lib/puppet/type/file.rb:836 ../lib/puppet/type/tidy.rb:332
6504
6568
  msgid "Could not stat; permission denied"
6505
6569
  msgstr ""
6506
6570
 
6507
- #: ../lib/puppet/type/file.rb:953
6571
+ #: ../lib/puppet/type/file.rb:961
6508
6572
  msgid "Not removing directory; use 'force' to override"
6509
6573
  msgstr ""
6510
6574
 
6511
6575
  #. TRANSLATORS refers to a file which could not be backed up
6512
- #: ../lib/puppet/type/file.rb:978
6513
- msgid "Could not back up; will not replace"
6576
+ #: ../lib/puppet/type/file.rb:986
6577
+ msgid "Could not back up; will not remove"
6514
6578
  msgstr ""
6515
6579
 
6516
- #: ../lib/puppet/type/file.rb:992
6580
+ #: ../lib/puppet/type/file.rb:1000
6517
6581
  msgid "File written to disk did not match checksum; discarding changes (%{content_checksum} vs %{newsum})"
6518
6582
  msgstr ""
6519
6583
 
@@ -7210,19 +7274,19 @@ msgstr ""
7210
7274
  msgid "%{klass} failed with error %{error_type}: %{detail}"
7211
7275
  msgstr ""
7212
7276
 
7213
- #: ../lib/puppet/util/execution.rb:231
7277
+ #: ../lib/puppet/util/execution.rb:276
7214
7278
  msgid "Could not get output"
7215
7279
  msgstr ""
7216
7280
 
7217
- #: ../lib/puppet/util/execution.rb:235
7281
+ #: ../lib/puppet/util/execution.rb:285
7218
7282
  msgid "Execution of '%{str}' returned %{exit_status}: %{output}"
7219
7283
  msgstr ""
7220
7284
 
7221
- #: ../lib/puppet/util/execution.rb:304
7285
+ #: ../lib/puppet/util/execution.rb:357
7222
7286
  msgid "Could not execute posix command: %{detail}"
7223
7287
  msgstr ""
7224
7288
 
7225
- #: ../lib/puppet/util/execution.rb:352
7289
+ #: ../lib/puppet/util/execution.rb:405
7226
7290
  msgid "Waiting for output; will sleep %{time_to_sleep} seconds"
7227
7291
  msgstr ""
7228
7292
 
@@ -7653,11 +7717,11 @@ msgstr ""
7653
7717
  msgid "No such user %{user}"
7654
7718
  msgstr ""
7655
7719
 
7656
- #: ../lib/puppet/util/suidmanager.rb:145
7720
+ #: ../lib/puppet/util/suidmanager.rb:146
7657
7721
  msgid "Invalid id type %{type}"
7658
7722
  msgstr ""
7659
7723
 
7660
- #: ../lib/puppet/util/suidmanager.rb:148
7724
+ #: ../lib/puppet/util/suidmanager.rb:149
7661
7725
  msgid "Invalid %{klass}: %{id}"
7662
7726
  msgstr ""
7663
7727