puppet 6.19.1-x64-mingw32 → 6.20.0-x64-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 (171) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -16
  3. data/Gemfile +2 -0
  4. data/Gemfile.lock +30 -25
  5. data/lib/puppet/application.rb +10 -6
  6. data/lib/puppet/application/agent.rb +1 -0
  7. data/lib/puppet/application/apply.rb +3 -2
  8. data/lib/puppet/application/device.rb +1 -0
  9. data/lib/puppet/application/filebucket.rb +2 -2
  10. data/lib/puppet/application/script.rb +1 -0
  11. data/lib/puppet/application_support.rb +7 -0
  12. data/lib/puppet/configurer.rb +28 -18
  13. data/lib/puppet/defaults.rb +24 -18
  14. data/lib/puppet/environments.rb +38 -54
  15. data/lib/puppet/face/config.rb +10 -0
  16. data/lib/puppet/face/epp.rb +12 -2
  17. data/lib/puppet/face/facts.rb +60 -0
  18. data/lib/puppet/ffi/posix.rb +10 -0
  19. data/lib/puppet/ffi/posix/constants.rb +14 -0
  20. data/lib/puppet/ffi/posix/functions.rb +24 -0
  21. data/lib/puppet/functions/epp.rb +1 -0
  22. data/lib/puppet/functions/inline_epp.rb +1 -0
  23. data/lib/puppet/indirector/fact_search.rb +60 -0
  24. data/lib/puppet/indirector/facts/json.rb +27 -0
  25. data/lib/puppet/indirector/facts/yaml.rb +3 -58
  26. data/lib/puppet/indirector/json.rb +5 -1
  27. data/lib/puppet/indirector/node/json.rb +8 -0
  28. data/lib/puppet/indirector/report/json.rb +34 -0
  29. data/lib/puppet/module_tool/applications/installer.rb +48 -2
  30. data/lib/puppet/module_tool/errors/shared.rb +17 -2
  31. data/lib/puppet/network/formats.rb +2 -1
  32. data/lib/puppet/pal/pal_impl.rb +70 -17
  33. data/lib/puppet/parser/ast/leaf.rb +3 -2
  34. data/lib/puppet/parser/templatewrapper.rb +1 -1
  35. data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
  36. data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -3
  37. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  38. data/lib/puppet/provider/package/apt.rb +4 -0
  39. data/lib/puppet/provider/user/aix.rb +2 -2
  40. data/lib/puppet/reference/configuration.rb +6 -5
  41. data/lib/puppet/settings.rb +33 -28
  42. data/lib/puppet/settings/alias_setting.rb +37 -0
  43. data/lib/puppet/settings/base_setting.rb +26 -2
  44. data/lib/puppet/util/autoload.rb +1 -8
  45. data/lib/puppet/util/fact_dif.rb +62 -0
  46. data/lib/puppet/util/posix.rb +54 -5
  47. data/lib/puppet/util/rubygems.rb +5 -1
  48. data/lib/puppet/version.rb +1 -1
  49. data/locales/puppet.pot +188 -164
  50. data/man/man5/puppet.conf.5 +6 -6
  51. data/man/man8/puppet-agent.8 +2 -2
  52. data/man/man8/puppet-apply.8 +2 -2
  53. data/man/man8/puppet-catalog.8 +1 -1
  54. data/man/man8/puppet-config.8 +1 -1
  55. data/man/man8/puppet-describe.8 +1 -1
  56. data/man/man8/puppet-device.8 +2 -2
  57. data/man/man8/puppet-doc.8 +1 -1
  58. data/man/man8/puppet-epp.8 +1 -1
  59. data/man/man8/puppet-facts.8 +32 -1
  60. data/man/man8/puppet-filebucket.8 +3 -3
  61. data/man/man8/puppet-generate.8 +1 -1
  62. data/man/man8/puppet-help.8 +1 -1
  63. data/man/man8/puppet-key.8 +1 -1
  64. data/man/man8/puppet-lookup.8 +1 -1
  65. data/man/man8/puppet-man.8 +1 -1
  66. data/man/man8/puppet-module.8 +1 -1
  67. data/man/man8/puppet-node.8 +4 -1
  68. data/man/man8/puppet-parser.8 +1 -1
  69. data/man/man8/puppet-plugin.8 +1 -1
  70. data/man/man8/puppet-report.8 +4 -1
  71. data/man/man8/puppet-resource.8 +1 -1
  72. data/man/man8/puppet-script.8 +2 -2
  73. data/man/man8/puppet-ssl.8 +1 -1
  74. data/man/man8/puppet-status.8 +1 -1
  75. data/man/man8/puppet.8 +2 -2
  76. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
  77. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
  78. data/spec/integration/application/agent_spec.rb +127 -3
  79. data/spec/integration/application/apply_spec.rb +19 -0
  80. data/spec/integration/defaults_spec.rb +0 -7
  81. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  82. data/spec/integration/resource/type_collection_spec.rb +2 -6
  83. data/spec/integration/transaction_spec.rb +4 -9
  84. data/spec/integration/util/windows/adsi_spec.rb +3 -1
  85. data/spec/integration/util/windows/registry_spec.rb +0 -10
  86. data/spec/lib/puppet_spec/settings.rb +6 -1
  87. data/spec/spec_helper.rb +1 -4
  88. data/spec/unit/agent_spec.rb +8 -6
  89. data/spec/unit/application/agent_spec.rb +0 -1
  90. data/spec/unit/application/config_spec.rb +224 -4
  91. data/spec/unit/application/filebucket_spec.rb +0 -2
  92. data/spec/unit/application_spec.rb +51 -9
  93. data/spec/unit/confine/feature_spec.rb +1 -1
  94. data/spec/unit/confine_spec.rb +8 -2
  95. data/spec/unit/defaults_spec.rb +20 -1
  96. data/spec/unit/environments_spec.rb +96 -19
  97. data/spec/unit/face/config_spec.rb +27 -32
  98. data/spec/unit/face/node_spec.rb +0 -11
  99. data/spec/unit/file_serving/configuration/parser_spec.rb +0 -1
  100. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  101. data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
  102. data/spec/unit/forge/module_release_spec.rb +2 -7
  103. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  104. data/spec/unit/http/service/compiler_spec.rb +49 -0
  105. data/spec/unit/http/service_spec.rb +1 -1
  106. data/spec/unit/indirector/face_spec.rb +0 -1
  107. data/spec/unit/indirector/facts/facter_spec.rb +0 -1
  108. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  109. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
  110. data/spec/unit/indirector/indirection_spec.rb +8 -12
  111. data/spec/unit/indirector/key/file_spec.rb +0 -1
  112. data/spec/unit/indirector/node/json_spec.rb +33 -0
  113. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  114. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  115. data/spec/unit/indirector_spec.rb +2 -2
  116. data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
  117. data/spec/unit/network/authconfig_spec.rb +0 -3
  118. data/spec/unit/network/http/api/indirected_routes_spec.rb +0 -9
  119. data/spec/unit/network/http/handler_spec.rb +0 -5
  120. data/spec/unit/parser/compiler_spec.rb +3 -19
  121. data/spec/unit/parser/resource_spec.rb +14 -8
  122. data/spec/unit/parser/templatewrapper_spec.rb +4 -3
  123. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
  124. data/spec/unit/property_spec.rb +1 -0
  125. data/spec/unit/provider/nameservice_spec.rb +66 -65
  126. data/spec/unit/provider/package/apt_spec.rb +4 -8
  127. data/spec/unit/provider/package/base_spec.rb +6 -5
  128. data/spec/unit/provider/package/pacman_spec.rb +18 -12
  129. data/spec/unit/provider/package/pip_spec.rb +6 -11
  130. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
  131. data/spec/unit/provider/user/aix_spec.rb +5 -0
  132. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  133. data/spec/unit/provider/user/pw_spec.rb +2 -0
  134. data/spec/unit/provider/user/useradd_spec.rb +1 -0
  135. data/spec/unit/provider_spec.rb +8 -10
  136. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  137. data/spec/unit/resource/capability_finder_spec.rb +6 -1
  138. data/spec/unit/resource/type_spec.rb +1 -1
  139. data/spec/unit/resource_spec.rb +11 -10
  140. data/spec/unit/settings_spec.rb +419 -242
  141. data/spec/unit/ssl/base_spec.rb +0 -1
  142. data/spec/unit/ssl/host_spec.rb +0 -5
  143. data/spec/unit/ssl/ssl_provider_spec.rb +14 -8
  144. data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
  145. data/spec/unit/transaction/event_manager_spec.rb +14 -11
  146. data/spec/unit/transaction_spec.rb +13 -4
  147. data/spec/unit/type/file/content_spec.rb +0 -1
  148. data/spec/unit/type/file/selinux_spec.rb +0 -2
  149. data/spec/unit/type/file_spec.rb +0 -6
  150. data/spec/unit/type/group_spec.rb +13 -6
  151. data/spec/unit/type/resources_spec.rb +7 -7
  152. data/spec/unit/type/service_spec.rb +1 -1
  153. data/spec/unit/type/tidy_spec.rb +0 -1
  154. data/spec/unit/type_spec.rb +2 -2
  155. data/spec/unit/util/at_fork_spec.rb +2 -2
  156. data/spec/unit/util/autoload_spec.rb +5 -1
  157. data/spec/unit/util/backups_spec.rb +1 -2
  158. data/spec/unit/util/execution_spec.rb +15 -11
  159. data/spec/unit/util/inifile_spec.rb +6 -14
  160. data/spec/unit/util/log_spec.rb +8 -7
  161. data/spec/unit/util/logging_spec.rb +3 -3
  162. data/spec/unit/util/posix_spec.rb +363 -15
  163. data/spec/unit/util/rubygems_spec.rb +2 -2
  164. data/spec/unit/util/selinux_spec.rb +76 -52
  165. data/spec/unit/util/storage_spec.rb +3 -1
  166. data/spec/unit/util/suidmanager_spec.rb +44 -41
  167. data/spec/unit/util_spec.rb +13 -6
  168. metadata +21 -10
  169. data/spec/integration/application/config_spec.rb +0 -74
  170. data/spec/unit/face/catalog_spec.rb +0 -6
  171. data/spec/unit/face/module_spec.rb +0 -3
@@ -31,7 +31,7 @@ class Puppet::Pops::Model::AstTransformer
31
31
  def ast(o, klass, hash={})
32
32
  # create and pass hash with file and line information
33
33
  # PUP-3274 - still needed since hostname transformation requires AST::HostName, and AST::Regexp
34
- klass.new(merge_location(hash, o))
34
+ klass.new(**merge_location(hash, o))
35
35
  end
36
36
 
37
37
  # THIS IS AN EXPENSIVE OPERATION
@@ -51,6 +51,10 @@ Puppet::Type.type(:package).provide :apt, :parent => :dpkg, :source => :dpkg do
51
51
  @property_flush = {}
52
52
  end
53
53
 
54
+ def mark
55
+ @property_flush[:mark]
56
+ end
57
+
54
58
  def mark=(value)
55
59
  @property_flush[:mark] = value
56
60
  end
@@ -178,7 +178,7 @@ Puppet::Type.type(:user).provide :aix, :parent => Puppet::Provider::AixObject do
178
178
  # does not have a password.
179
179
  break if line =~ /^\S+:$/
180
180
 
181
- match_obj = /password = (\S+)/.match(line)
181
+ match_obj = /password\s+=\s+(\S+)/.match(line)
182
182
  end
183
183
  return :absent unless match_obj
184
184
 
@@ -211,7 +211,7 @@ Puppet::Type.type(:user).provide :aix, :parent => Puppet::Provider::AixObject do
211
211
  tempfile = Tempfile.new("puppet_#{user}_pw", :encoding => Encoding::ASCII)
212
212
  tempfile << "#{user}:#{value}\n"
213
213
  tempfile.close()
214
-
214
+
215
215
  # Options '-e', '-c', use encrypted password and clear flags
216
216
  # Must receive "user:enc_password" as input
217
217
  # command, arguments = {:failonfail => true, :combine => true}
@@ -55,11 +55,12 @@ config.header = <<EOT
55
55
  * Each of these settings can be specified in `puppet.conf` or on the
56
56
  command line.
57
57
  * Puppet Enterprise (PE) and open source Puppet share the configuration settings
58
- that are documented here. However, PE defaults for some settings differ from
59
- the open source Puppet defaults. Some examples of settings that have different
60
- PE defaults include `disable18n`, `environment_timeout`, `always_retry_plugins`,
61
- and the Puppet Server JRuby `max-active-instances` setting. To verify PE
62
- configuration defaults, check the `puppet.conf` file after installation.
58
+ documented here. However, PE defaults differ from open source defaults for some
59
+ settings, such as `node_terminus`, `storeconfigs`, `always_retry_plugins`,
60
+ `disable18n`, `environment_timeout` (when Code Manager is enabled), and the
61
+ Puppet Server JRuby `max-active-instances` setting. To verify PE configuration
62
+ defaults, check the `puppet.conf` or `pe-puppet-server.conf` file after
63
+ installation.
63
64
  * When using boolean settings on the command line, use `--setting` and
64
65
  `--no-setting` instead of `--setting (true|false)`. (Using `--setting false`
65
66
  results in "Error: Could not parse application options: needless argument".)
@@ -32,6 +32,7 @@ class Puppet::Settings
32
32
  require 'puppet/settings/server_list_setting'
33
33
  require 'puppet/settings/http_extra_headers_setting'
34
34
  require 'puppet/settings/certificate_revocation_setting'
35
+ require 'puppet/settings/alias_setting'
35
36
 
36
37
  # local reference for convenience
37
38
  PuppetOptionParser = Puppet::Util::CommandLine::PuppetOptionParser
@@ -385,19 +386,6 @@ class Puppet::Settings
385
386
  call_hooks_deferred_to_application_initialization
386
387
  issue_deprecations
387
388
 
388
- run_mode = Puppet::Util::RunMode[self.preferred_run_mode]
389
- if run_mode.agent? || run_mode.server?
390
- if self.set_in_section?(:masterport, run_mode.name) && !self.set_in_section?(:serverport, run_mode.name)
391
- self[:serverport] = self[:masterport]
392
- elsif self.set_by_config?(:masterport) && !self.set_by_config?(:serverport)
393
- self[:serverport] = self[:masterport]
394
- elsif self.set_in_section?(:serverport, run_mode.name) && !self.set_in_section?(:masterport, run_mode.name)
395
- self[:masterport] = self[:serverport]
396
- elsif self.set_by_config?(:serverport) && !self.set_by_config?(:masterport)
397
- self[:masterport] = self[:serverport]
398
- end
399
- end
400
-
401
389
  REQUIRED_APP_SETTINGS.each do |key|
402
390
  create_ancestors(Puppet[key])
403
391
  end
@@ -742,7 +730,8 @@ class Puppet::Settings
742
730
  :autosign => AutosignSetting,
743
731
  :server_list => ServerListSetting,
744
732
  :http_extra_headers => HttpExtraHeadersSetting,
745
- :certificate_revocation => CertificateRevocationSetting
733
+ :certificate_revocation => CertificateRevocationSetting,
734
+ :alias => AliasSetting
746
735
  }
747
736
 
748
737
  # Create a new setting. The value is passed in because it's used to determine
@@ -1273,27 +1262,37 @@ Generated on #{Time.now}.
1273
1262
  end
1274
1263
 
1275
1264
  def add_environment_resources(catalog, sections)
1276
- path = self[:environmentpath]
1277
- envdir = path.split(File::PATH_SEPARATOR).first if path
1278
1265
  configured_environment = self[:environment]
1279
- if configured_environment == "production" && envdir && Puppet::FileSystem.exist?(envdir)
1280
- configured_environment_path = File.join(envdir, configured_environment)
1281
- # If configured_environment_path is a symlink, assume the source path is being managed
1282
- # elsewhere, so don't do any of this configuration
1283
- if !Puppet::FileSystem.symlink?(configured_environment_path)
1266
+
1267
+ if configured_environment == "production" && !production_environment_exists?
1268
+ environment_path = self[:environmentpath]
1269
+ first_environment_path = environment_path.split(File::PATH_SEPARATOR).first
1270
+
1271
+ if Puppet::FileSystem.exist?(first_environment_path)
1272
+ production_environment_path = File.join(first_environment_path, configured_environment)
1284
1273
  parameters = { :ensure => 'directory' }
1285
- unless Puppet::FileSystem.exist?(configured_environment_path)
1286
- parameters[:mode] = '0750'
1287
- if Puppet.features.root?
1288
- parameters[:owner] = Puppet[:user] if service_user_available?
1289
- parameters[:group] = Puppet[:group] if service_group_available?
1290
- end
1274
+ parameters[:mode] = '0750'
1275
+ if Puppet.features.root?
1276
+ parameters[:owner] = Puppet[:user] if service_user_available?
1277
+ parameters[:group] = Puppet[:group] if service_group_available?
1291
1278
  end
1292
- catalog.add_resource(Puppet::Resource.new(:file, configured_environment_path, :parameters => parameters))
1279
+ catalog.add_resource(Puppet::Resource.new(:file, production_environment_path, :parameters => parameters))
1293
1280
  end
1294
1281
  end
1295
1282
  end
1296
1283
 
1284
+ def production_environment_exists?
1285
+ environment_path = self[:environmentpath]
1286
+ paths = environment_path.split(File::PATH_SEPARATOR)
1287
+
1288
+ paths.any? do |path|
1289
+ # If expected_path is a symlink, assume the source path is being managed
1290
+ # elsewhere, so accept it also as a valid production environment path
1291
+ expected_path = File.join(path, 'production')
1292
+ Puppet::FileSystem.directory?(expected_path) || Puppet::FileSystem.symlink?(expected_path)
1293
+ end
1294
+ end
1295
+
1297
1296
  def add_user_resources(catalog, sections)
1298
1297
  return unless Puppet.features.root?
1299
1298
  return if Puppet::Util::Platform.windows?
@@ -1394,6 +1393,12 @@ Generated on #{Time.now}.
1394
1393
  end
1395
1394
  end
1396
1395
 
1396
+ setting = @defaults[name]
1397
+ if setting.respond_to?(:alias_name)
1398
+ val = lookup(setting.alias_name)
1399
+ return val if val
1400
+ end
1401
+
1397
1402
  @defaults[name].default
1398
1403
  end
1399
1404
 
@@ -0,0 +1,37 @@
1
+ class Puppet::Settings::AliasSetting
2
+ attr_reader :name, :alias_name
3
+
4
+ def initialize(args = {})
5
+ @name = args[:name]
6
+ @alias_name = args[:alias_for]
7
+ @alias_for = Puppet.settings.setting(alias_name)
8
+ end
9
+
10
+ def optparse_args
11
+ args = @alias_for.optparse_args
12
+ args[0].gsub!(alias_name.to_s, name.to_s)
13
+ args
14
+ end
15
+
16
+ def getopt_args
17
+ args = @alias_for.getopt_args
18
+ args[0].gsub!(alias_name.to_s, name.to_s)
19
+ args
20
+ end
21
+
22
+ def type
23
+ :alias
24
+ end
25
+
26
+ def method_missing(method, *args)
27
+ begin
28
+ alias_for.send(method, *args)
29
+ rescue => e
30
+ Puppet.log_exception(self.class, e.message)
31
+ end
32
+ end
33
+
34
+ private
35
+
36
+ attr_reader :alias_for
37
+ end
@@ -1,3 +1,4 @@
1
+ require 'set'
1
2
  require 'puppet/settings/errors'
2
3
 
3
4
  # The base setting type
@@ -5,27 +6,50 @@ class Puppet::Settings::BaseSetting
5
6
  attr_accessor :name, :desc, :section, :default, :call_hook
6
7
  attr_reader :short, :deprecated
7
8
 
9
+ # Hooks are called during different parts of the settings lifecycle:
10
+ #
11
+ # * :on_write_only - This is the default hook type. The hook will be called
12
+ # if its value is set in `main` or programmatically. If its value is set in
13
+ # a section that doesn't match the application's run mode, it will be
14
+ # ignored entirely. If the section does match the run mode, the value will
15
+ # be used, but the hook will not be called!
16
+ #
17
+ # * :on_define_and_write - The hook behaves the same as above, except it is
18
+ # also called immediately when the setting is defined in
19
+ # {Puppet::Settings.define_settings}. In that case, the hook receives the
20
+ # default value as specified.
21
+ #
22
+ # * :on_initialize_and_write - The hook will be called if the value is set in
23
+ # `main`, the section that matches the run mode, or programmatically.
24
+ #
25
+ HOOK_TYPES = Set.new([:on_define_and_write, :on_initialize_and_write, :on_write_only]).freeze
26
+
8
27
  def self.available_call_hook_values
9
- [:on_define_and_write, :on_initialize_and_write, :on_write_only]
28
+ HOOK_TYPES.to_a
10
29
  end
11
30
 
31
+ # Registers a hook to be called later based on the type of hook specified in `value`.
32
+ #
33
+ # @param value [Symbol] One of {HOOK_TYPES}
12
34
  def call_hook=(value)
13
35
  if value.nil?
14
36
  #TRANSLATORS ':%{name}', ':call_hook', and ':on_write_only' should not be translated
15
37
  Puppet.warning _("Setting :%{name} :call_hook is nil, defaulting to :on_write_only") % { name: name }
16
38
  value = :on_write_only
17
39
  end
18
- unless self.class.available_call_hook_values.include?(value)
40
+ unless HOOK_TYPES.include?(value)
19
41
  #TRANSLATORS 'call_hook' is a Puppet option name and should not be translated
20
42
  raise ArgumentError, _("Invalid option %{value} for call_hook") % { value: value }
21
43
  end
22
44
  @call_hook = value
23
45
  end
24
46
 
47
+ # @see {HOOK_TYPES}
25
48
  def call_hook_on_define?
26
49
  call_hook == :on_define_and_write
27
50
  end
28
51
 
52
+ # @see {HOOK_TYPES}
29
53
  def call_hook_on_initialize?
30
54
  call_hook == :on_initialize_and_write
31
55
  end
@@ -166,14 +166,7 @@ class Puppet::Util::Autoload
166
166
  # Normalize a path. This converts ALT_SEPARATOR to SEPARATOR on Windows
167
167
  # and eliminates unnecessary parts of a path.
168
168
  def cleanpath(path)
169
- # There are two cases here because cleanpath does not handle absolute
170
- # paths correctly on windows (c:\ and c:/ are treated as distinct) but
171
- # we don't want to convert relative paths to absolute
172
- if Puppet::Util.absolute_path?(path)
173
- File.expand_path(path)
174
- else
175
- Pathname.new(path).cleanpath.to_s
176
- end
169
+ Pathname.new(path).cleanpath.to_s
177
170
  end
178
171
  end
179
172
 
@@ -0,0 +1,62 @@
1
+ require 'json'
2
+
3
+ class FactDif
4
+ def initialize(old_output, new_output, exclude_list = [])
5
+ @c_facter = JSON.parse(old_output)['values']
6
+ @next_facter = JSON.parse(new_output)['values']
7
+ @exclude_list = exclude_list
8
+ @diff = {}
9
+ end
10
+
11
+ def difs
12
+ search_hash(@c_facter, [])
13
+
14
+ @diff
15
+ end
16
+
17
+ private
18
+
19
+ def search_hash(sh, path = [])
20
+ if sh.is_a?(Hash)
21
+ sh.each do |k, v|
22
+ search_hash(v, path.push(k))
23
+ path.pop
24
+ end
25
+ elsif sh.is_a?(Array)
26
+ sh.each_with_index do |v, index|
27
+ search_hash(v, path.push(index))
28
+ path.pop
29
+ end
30
+ else
31
+ compare(path, sh)
32
+ end
33
+ end
34
+
35
+ def compare(fact_path, old_value)
36
+ new_value = @next_facter.dig(*fact_path)
37
+ if different?(new_value, old_value) && !excluded?(fact_path.join('.'))
38
+ @diff[fact_path.join('.')] = { new_value: new_value, old_value: old_value }
39
+ end
40
+ end
41
+
42
+ def different?(new, old)
43
+ if old.is_a?(String) && new.is_a?(String)
44
+ old_values = old.split(',')
45
+ new_values = new.split(',')
46
+
47
+ diff = old_values - new_values
48
+ # also add new entries only available in Facter 4
49
+ diff.concat(new_values - old_values)
50
+
51
+ return true if diff.any?
52
+
53
+ return false
54
+ end
55
+
56
+ old != new
57
+ end
58
+
59
+ def excluded?(fact_name)
60
+ @exclude_list.any? {|excluded_fact| fact_name =~ /#{excluded_fact}/}
61
+ end
62
+ end
@@ -12,11 +12,18 @@ module Puppet::Util::POSIX
12
12
  class << self
13
13
  # Returns an array of all the groups that the user's a member of.
14
14
  def groups_of(user)
15
- groups = []
16
- Puppet::Etc.group do |group|
17
- groups << group.name if group.mem.include?(user)
15
+ begin
16
+ require 'puppet/ffi/posix'
17
+ groups = get_groups_list(user)
18
+ rescue StandardError, LoadError => e
19
+ Puppet.debug("Falling back to Puppet::Etc.group: #{e.message}")
20
+
21
+ groups = []
22
+ Puppet::Etc.group do |group|
23
+ groups << group.name if group.mem.include?(user)
24
+ end
18
25
  end
19
-
26
+
20
27
  uniq_groups = groups.uniq
21
28
  if uniq_groups != groups
22
29
  Puppet.debug(_('Removing any duplicate group entries'))
@@ -24,6 +31,39 @@ module Puppet::Util::POSIX
24
31
 
25
32
  uniq_groups
26
33
  end
34
+
35
+ private
36
+ def get_groups_list(user)
37
+ raise LoadError, "The 'getgrouplist' method is not available" unless Puppet::FFI::POSIX::Functions.respond_to?(:getgrouplist)
38
+
39
+ user_gid = Puppet::Etc.getpwnam(user).gid
40
+ ngroups = Puppet::FFI::POSIX::Constants::MAXIMUM_NUMBER_OF_GROUPS
41
+
42
+ while true do # rubocop:disable Lint/LiteralInCondition
43
+ FFI::MemoryPointer.new(:int) do |ngroups_ptr|
44
+ FFI::MemoryPointer.new(:uint, ngroups) do |groups_ptr|
45
+ old_ngroups = ngroups
46
+ ngroups_ptr.write_int(ngroups)
47
+
48
+ if Puppet::FFI::POSIX::Functions::getgrouplist(user, user_gid, groups_ptr, ngroups_ptr) != -1
49
+ groups_gids = groups_ptr.get_array_of_uint(0, ngroups_ptr.read_int)
50
+
51
+ result = []
52
+ groups_gids.each do |group_gid|
53
+ group_info = Puppet::Etc.getgrgid(group_gid)
54
+ result |= [group_info.name] if group_info.mem.include?(user)
55
+ end
56
+ return result
57
+ end
58
+
59
+ ngroups = ngroups_ptr.read_int
60
+ if ngroups <= old_ngroups
61
+ ngroups *= 2
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
27
67
  end
28
68
 
29
69
  # Retrieve a field from a POSIX Etc object. The id can be either an integer
@@ -144,8 +184,17 @@ module Puppet::Util::POSIX
144
184
  name = get_posix_field(location, :name, id)
145
185
  check_value = name
146
186
  end
187
+
147
188
  if check_value != field
148
- return search_posix_field(location, id_field, field)
189
+ check_value_id = get_posix_field(location, id_field, check_value) if check_value
190
+
191
+ if id == check_value_id
192
+ Puppet.debug("Multiple entries found for resource: '#{location}' with #{id_field}: #{id}")
193
+ return id
194
+ else
195
+ Puppet.debug("The value retrieved: '#{check_value}' is different than the required state: '#{field}', searching in all entries")
196
+ return search_posix_field(location, id_field, field)
197
+ end
149
198
  else
150
199
  return id
151
200
  end
@@ -41,7 +41,11 @@ module Puppet::Util::RubyGems
41
41
  def directories
42
42
  # `require 'mygem'` will consider and potentially load
43
43
  # prerelease gems, so we need to match that behavior.
44
- Gem::Specification.latest_specs(true).collect do |spec|
44
+ #
45
+ # Just load the stub which points to the gem path, and
46
+ # delay loading the full specification until if/when the
47
+ # gem is required.
48
+ Gem::Specification.stubs.collect do |spec|
45
49
  File.join(spec.full_gem_path, 'lib')
46
50
  end
47
51
  end
@@ -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 = '6.19.1'
9
+ PUPPETVERSION = '6.20.0'
10
10
 
11
11
  ##
12
12
  # version is a public API method intended to always provide a fast and
@@ -1,16 +1,16 @@
1
1
  # SOME DESCRIPTIVE TITLE.
2
- # Copyright (C) 2020 Puppet, Inc.
2
+ # Copyright (C) 2021 Puppet, Inc.
3
3
  # This file is distributed under the same license as the Puppet automation framework package.
4
- # FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, 2021.
5
5
  #
6
6
  #, fuzzy
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: Puppet automation framework 6.18.0-104-g9f65e07e38\n"
9
+ "Project-Id-Version: Puppet automation framework 6.19.1-133-gcc65fe8151\n"
10
10
  "\n"
11
11
  "Report-Msgid-Bugs-To: https://tickets.puppetlabs.com\n"
12
- "POT-Creation-Date: 2020-10-13 14:34+0000\n"
13
- "PO-Revision-Date: 2020-10-13 14:34+0000\n"
12
+ "POT-Creation-Date: 2021-01-14 12:33+0000\n"
13
+ "PO-Revision-Date: 2021-01-14 12:33+0000\n"
14
14
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
15
15
  "Language-Team: LANGUAGE <LL@li.org>\n"
16
16
  "Language: \n"
@@ -168,11 +168,11 @@ msgstr ""
168
168
  msgid "No valid command or main"
169
169
  msgstr ""
170
170
 
171
- #: ../lib/puppet/application.rb:428
171
+ #: ../lib/puppet/application.rb:431
172
172
  msgid "Could not set logdest to %{dest}."
173
173
  msgstr ""
174
174
 
175
- #: ../lib/puppet/application.rb:504
175
+ #: ../lib/puppet/application.rb:508
176
176
  msgid "No help available for puppet %{app_name}"
177
177
  msgstr ""
178
178
 
@@ -184,19 +184,19 @@ msgstr ""
184
184
  msgid "The puppet agent daemon"
185
185
  msgstr ""
186
186
 
187
- #: ../lib/puppet/application/agent.rb:414
187
+ #: ../lib/puppet/application/agent.rb:415
188
188
  msgid "Fingerprint asked but neither the certificate, nor the certificate request have been issued"
189
189
  msgstr ""
190
190
 
191
- #: ../lib/puppet/application/agent.rb:419
191
+ #: ../lib/puppet/application/agent.rb:420
192
192
  msgid "Failed to generate fingerprint: %{message}"
193
193
  msgstr ""
194
194
 
195
- #: ../lib/puppet/application/agent.rb:442
195
+ #: ../lib/puppet/application/agent.rb:443
196
196
  msgid "Starting Puppet client version %{version}"
197
197
  msgstr ""
198
198
 
199
- #: ../lib/puppet/application/agent.rb:458
199
+ #: ../lib/puppet/application/agent.rb:459
200
200
  msgid "The puppet agent command does not take parameters"
201
201
  msgstr ""
202
202
 
@@ -206,35 +206,35 @@ msgstr ""
206
206
 
207
207
  #. TRANSLATORS "puppet apply" is a program command and should not be translated
208
208
  #. TRANSLATORS "puppet apply" is a program command and should not be translated
209
- #: ../lib/puppet/application/apply.rb:207 ../lib/puppet/application/apply.rb:320
209
+ #: ../lib/puppet/application/apply.rb:208 ../lib/puppet/application/apply.rb:321
210
210
  msgid "For puppet apply"
211
211
  msgstr ""
212
212
 
213
- #: ../lib/puppet/application/apply.rb:215
213
+ #: ../lib/puppet/application/apply.rb:216
214
214
  msgid "%{file} is not readable"
215
215
  msgstr ""
216
216
 
217
- #: ../lib/puppet/application/apply.rb:286 ../lib/puppet/application/script.rb:239
217
+ #: ../lib/puppet/application/apply.rb:287 ../lib/puppet/application/script.rb:240
218
218
  msgid "Exiting"
219
219
  msgstr ""
220
220
 
221
- #: ../lib/puppet/application/apply.rb:330
221
+ #: ../lib/puppet/application/apply.rb:331
222
222
  msgid "Could not deserialize catalog from %{format}: %{detail}"
223
223
  msgstr ""
224
224
 
225
- #: ../lib/puppet/application/apply.rb:351 ../lib/puppet/application/script.rb:144
225
+ #: ../lib/puppet/application/apply.rb:352 ../lib/puppet/application/script.rb:145
226
226
  msgid "Could not find facts for %{node}"
227
227
  msgstr ""
228
228
 
229
- #: ../lib/puppet/application/apply.rb:363 ../lib/puppet/application/script.rb:152
229
+ #: ../lib/puppet/application/apply.rb:364 ../lib/puppet/application/script.rb:153
230
230
  msgid "Could not find node %{node}"
231
231
  msgstr ""
232
232
 
233
- #: ../lib/puppet/application/apply.rb:376 ../lib/puppet/application/script.rb:137
233
+ #: ../lib/puppet/application/apply.rb:377 ../lib/puppet/application/script.rb:138
234
234
  msgid "Could not find file %{manifest}"
235
235
  msgstr ""
236
236
 
237
- #: ../lib/puppet/application/apply.rb:377
237
+ #: ../lib/puppet/application/apply.rb:378
238
238
  msgid "Only one file can be applied per run. Skipping %{files}"
239
239
  msgstr ""
240
240
 
@@ -250,47 +250,47 @@ msgstr ""
250
250
  msgid "Manage remote network devices"
251
251
  msgstr ""
252
252
 
253
- #: ../lib/puppet/application/device.rb:230
253
+ #: ../lib/puppet/application/device.rb:231
254
254
  msgid "resource command requires target"
255
255
  msgstr ""
256
256
 
257
- #: ../lib/puppet/application/device.rb:233
257
+ #: ../lib/puppet/application/device.rb:234
258
258
  msgid "facts command requires target"
259
259
  msgstr ""
260
260
 
261
- #: ../lib/puppet/application/device.rb:236
261
+ #: ../lib/puppet/application/device.rb:237
262
262
  msgid "missing argument: --target is required when using --apply"
263
263
  msgstr ""
264
264
 
265
- #: ../lib/puppet/application/device.rb:237
265
+ #: ../lib/puppet/application/device.rb:238
266
266
  msgid "%{file} does not exist, cannot apply"
267
267
  msgstr ""
268
268
 
269
- #: ../lib/puppet/application/device.rb:255
269
+ #: ../lib/puppet/application/device.rb:256
270
270
  msgid "Target device / certificate '%{target}' not found in %{config}"
271
271
  msgstr ""
272
272
 
273
- #: ../lib/puppet/application/device.rb:257
273
+ #: ../lib/puppet/application/device.rb:258
274
274
  msgid "No device found in %{config}"
275
275
  msgstr ""
276
276
 
277
- #: ../lib/puppet/application/device.rb:316
277
+ #: ../lib/puppet/application/device.rb:317
278
278
  msgid "retrieving resource: %{resource} from %{target} at %{scheme}%{url_host}%{port}%{url_path}"
279
279
  msgstr ""
280
280
 
281
- #: ../lib/puppet/application/device.rb:331
281
+ #: ../lib/puppet/application/device.rb:332
282
282
  msgid "retrieving facts from %{target} at %{scheme}%{url_host}%{port}%{url_path}"
283
283
  msgstr ""
284
284
 
285
- #: ../lib/puppet/application/device.rb:354
285
+ #: ../lib/puppet/application/device.rb:355
286
286
  msgid "starting applying configuration to %{target} at %{scheme}%{url_host}%{port}%{url_path}"
287
287
  msgstr ""
288
288
 
289
- #: ../lib/puppet/application/device.rb:392 ../lib/puppet/application/resource.rb:196
289
+ #: ../lib/puppet/application/device.rb:393 ../lib/puppet/application/resource.rb:196
290
290
  msgid "You must specify the type to display"
291
291
  msgstr ""
292
292
 
293
- #: ../lib/puppet/application/device.rb:393 ../lib/puppet/application/resource.rb:197
293
+ #: ../lib/puppet/application/device.rb:394 ../lib/puppet/application/resource.rb:197
294
294
  msgid "Could not find type %{type}"
295
295
  msgstr ""
296
296
 
@@ -414,7 +414,7 @@ msgstr ""
414
414
  msgid "Unknown rendering format '%{format}'"
415
415
  msgstr ""
416
416
 
417
- #: ../lib/puppet/application/lookup.rb:366 ../lib/puppet/face/epp.rb:520
417
+ #: ../lib/puppet/application/lookup.rb:366 ../lib/puppet/face/epp.rb:530
418
418
  msgid "Incorrect formatted data in %{fact_file} given via the --facts flag"
419
419
  msgstr ""
420
420
 
@@ -438,11 +438,11 @@ msgstr ""
438
438
  msgid "Run a puppet manifests as a script without compiling a catalog"
439
439
  msgstr ""
440
440
 
441
- #: ../lib/puppet/application/script.rb:124
441
+ #: ../lib/puppet/application/script.rb:125
442
442
  msgid "Bolt must be installed to use the script application"
443
443
  msgstr ""
444
444
 
445
- #: ../lib/puppet/application/script.rb:138
445
+ #: ../lib/puppet/application/script.rb:139
446
446
  msgid "Only one file can be used per run. Skipping %{files}"
447
447
  msgstr ""
448
448
 
@@ -550,40 +550,40 @@ msgstr ""
550
550
  msgid "Applied catalog in %{seconds} seconds"
551
551
  msgstr ""
552
552
 
553
- #: ../lib/puppet/configurer.rb:228
553
+ #: ../lib/puppet/configurer.rb:227
554
554
  msgid "Could not select a functional puppet server from server_list: '%{server_list}'"
555
555
  msgstr ""
556
556
 
557
557
  #. TRANSLATORS 'server_list' is the name of a setting and should not be translated
558
- #: ../lib/puppet/configurer.rb:231
558
+ #: ../lib/puppet/configurer.rb:241
559
559
  msgid "Selected puppet server from the `server_list` setting: %{server}:%{port}"
560
560
  msgstr ""
561
561
 
562
- #: ../lib/puppet/configurer.rb:280
562
+ #: ../lib/puppet/configurer.rb:277
563
563
  msgid "Local environment: '%{local_env}' doesn't match the environment of the cached catalog '%{catalog_env}', switching agent to '%{catalog_env}'."
564
564
  msgstr ""
565
565
 
566
- #: ../lib/puppet/configurer.rb:325
566
+ #: ../lib/puppet/configurer.rb:322
567
567
  msgid "Local environment: '%{local_env}' doesn't match server specified node environment '%{node_env}', switching agent to '%{node_env}'."
568
568
  msgstr ""
569
569
 
570
- #: ../lib/puppet/configurer.rb:340
570
+ #: ../lib/puppet/configurer.rb:337
571
571
  msgid "Using configured environment '%{env}'"
572
572
  msgstr ""
573
573
 
574
- #: ../lib/puppet/configurer.rb:344
574
+ #: ../lib/puppet/configurer.rb:341
575
575
  msgid "Unable to fetch my node definition, but the agent run will continue:"
576
576
  msgstr ""
577
577
 
578
- #: ../lib/puppet/configurer.rb:372
578
+ #: ../lib/puppet/configurer.rb:369
579
579
  msgid "Not using catalog because its environment '%{catalog_env}' does not match agent specified environment '%{local_env}' and strict_environment_mode is set"
580
580
  msgstr ""
581
581
 
582
- #: ../lib/puppet/configurer.rb:383
582
+ #: ../lib/puppet/configurer.rb:380
583
583
  msgid "Catalog environment didn't stabilize after %{tries} fetches, aborting run"
584
584
  msgstr ""
585
585
 
586
- #: ../lib/puppet/configurer.rb:385
586
+ #: ../lib/puppet/configurer.rb:382
587
587
  msgid "Local environment: '%{local_env}' doesn't match server specified environment '%{catalog_env}', restarting agent run with environment '%{catalog_env}'"
588
588
  msgstr ""
589
589
 
@@ -692,46 +692,50 @@ msgstr ""
692
692
  msgid "a data type can only have one implementation"
693
693
  msgstr ""
694
694
 
695
- #: ../lib/puppet/defaults.rb:178
695
+ #: ../lib/puppet/defaults.rb:179
696
696
  msgid "Cannot disable unrecognized warning types '%{invalid}'."
697
697
  msgstr ""
698
698
 
699
- #: ../lib/puppet/defaults.rb:179
699
+ #: ../lib/puppet/defaults.rb:180
700
700
  msgid "Valid values are '%{values}'."
701
701
  msgstr ""
702
702
 
703
703
  #. TRANSLATORS 'data_binding_terminus' is a setting and should not be translated
704
- #: ../lib/puppet/defaults.rb:546
704
+ #: ../lib/puppet/defaults.rb:547
705
705
  msgid "Setting 'data_binding_terminus' is deprecated."
706
706
  msgstr ""
707
707
 
708
708
  #. TRANSLATORS 'hiera' should not be translated
709
- #: ../lib/puppet/defaults.rb:548
709
+ #: ../lib/puppet/defaults.rb:549
710
710
  msgid "Convert custom terminus to hiera 5 API."
711
711
  msgstr ""
712
712
 
713
713
  #. TRANSLATORS 'environment_data_provider' is a setting and should not be translated
714
- #: ../lib/puppet/defaults.rb:771
714
+ #: ../lib/puppet/defaults.rb:762
715
715
  msgid "Setting 'environment_data_provider' is deprecated."
716
716
  msgstr ""
717
717
 
718
- #: ../lib/puppet/defaults.rb:854
718
+ #: ../lib/puppet/defaults.rb:847
719
719
  msgid "Certificate names must be lower case"
720
720
  msgstr ""
721
721
 
722
- #: ../lib/puppet/defaults.rb:1048
722
+ #: ../lib/puppet/defaults.rb:1042
723
723
  msgid "Setting 'ssl_client_ca_auth' is deprecated."
724
724
  msgstr ""
725
725
 
726
- #: ../lib/puppet/defaults.rb:1127 ../lib/puppet/settings/enum_setting.rb:13 ../lib/puppet/settings/symbolic_enum_setting.rb:14
726
+ #: ../lib/puppet/defaults.rb:1121 ../lib/puppet/settings/enum_setting.rb:13 ../lib/puppet/settings/symbolic_enum_setting.rb:14
727
727
  msgid "Invalid value '%{value}' for parameter %{name}. Allowed values are '%{allowed_values}'"
728
728
  msgstr ""
729
729
 
730
730
  #. TRANSLATORS 'pluginsync' is a setting and should not be translated
731
- #: ../lib/puppet/defaults.rb:2005
731
+ #: ../lib/puppet/defaults.rb:1995
732
732
  msgid "Setting 'pluginsync' is deprecated."
733
733
  msgstr ""
734
734
 
735
+ #: ../lib/puppet/defaults.rb:2230
736
+ msgid "The 'func3x_check' setting is deprecated and will be removed in a future release."
737
+ msgstr ""
738
+
735
739
  #: ../lib/puppet/error.rb:77
736
740
  msgid "Could not parse for environment %{environment}: %{message}"
737
741
  msgstr ""
@@ -774,7 +778,7 @@ msgstr ""
774
778
  msgid "no matching resources found"
775
779
  msgstr ""
776
780
 
777
- #: ../lib/puppet/face/config.rb:7 ../lib/puppet/face/epp.rb:8 ../lib/puppet/face/facts.rb:6 ../lib/puppet/face/generate.rb:7 ../lib/puppet/face/help.rb:9 ../lib/puppet/face/key.rb:5 ../lib/puppet/face/man.rb:8 ../lib/puppet/face/module.rb:9 ../lib/puppet/face/node.rb:4 ../lib/puppet/face/parser.rb:6 ../lib/puppet/face/plugin.rb:6 ../lib/puppet/face/report.rb:5 ../lib/puppet/face/resource.rb:5 ../lib/puppet/face/status.rb:5
781
+ #: ../lib/puppet/face/config.rb:7 ../lib/puppet/face/epp.rb:8 ../lib/puppet/face/facts.rb:30 ../lib/puppet/face/generate.rb:7 ../lib/puppet/face/help.rb:9 ../lib/puppet/face/key.rb:5 ../lib/puppet/face/man.rb:8 ../lib/puppet/face/module.rb:9 ../lib/puppet/face/node.rb:4 ../lib/puppet/face/parser.rb:6 ../lib/puppet/face/plugin.rb:6 ../lib/puppet/face/report.rb:5 ../lib/puppet/face/resource.rb:5 ../lib/puppet/face/status.rb:5
778
782
  msgid "Apache 2 license; see COPYING"
779
783
  msgstr ""
780
784
 
@@ -840,28 +844,28 @@ msgid ""
840
844
  "https://puppet.com/docs/puppet/latest/configuration.html#environment\n"
841
845
  msgstr ""
842
846
 
843
- #: ../lib/puppet/face/config.rb:176
847
+ #: ../lib/puppet/face/config.rb:186
844
848
  msgid "Deleted setting from '%{section_name}': '%{setting_string}', and adding it to 'server' section"
845
849
  msgstr ""
846
850
 
847
- #: ../lib/puppet/face/config.rb:191
851
+ #: ../lib/puppet/face/config.rb:201
848
852
  msgid "Delete a Puppet setting."
849
853
  msgstr ""
850
854
 
851
- #: ../lib/puppet/face/config.rb:192
855
+ #: ../lib/puppet/face/config.rb:202
852
856
  msgid "<setting>"
853
857
  msgstr ""
854
858
 
855
- #: ../lib/puppet/face/config.rb:226 ../lib/puppet/face/config.rb:230 ../lib/puppet/face/config.rb:241
859
+ #: ../lib/puppet/face/config.rb:236 ../lib/puppet/face/config.rb:240 ../lib/puppet/face/config.rb:251
856
860
  msgid "Deleted setting from '%{section_name}': '%{setting_string}'"
857
861
  msgstr ""
858
862
 
859
- #: ../lib/puppet/face/config.rb:244
863
+ #: ../lib/puppet/face/config.rb:254
860
864
  msgid "No setting found in configuration file for section '%{section_name}' setting name '%{name}'"
861
865
  msgstr ""
862
866
 
863
867
  #. TRANSLATORS the 'puppet.conf' is a specific file and should not be translated
864
- #: ../lib/puppet/face/config.rb:252
868
+ #: ../lib/puppet/face/config.rb:262
865
869
  msgid "The puppet.conf file does not exist %{puppet_conf}"
866
870
  msgstr ""
867
871
 
@@ -1011,26 +1015,34 @@ msgstr ""
1011
1015
  msgid "--values option must evaluate to a Hash or undef, got: '%{values_class}'"
1012
1016
  msgstr ""
1013
1017
 
1014
- #: ../lib/puppet/face/facts.rb:8
1018
+ #: ../lib/puppet/face/facts.rb:32
1015
1019
  msgid "Retrieve and store facts."
1016
1020
  msgstr ""
1017
1021
 
1018
- #: ../lib/puppet/face/facts.rb:16
1022
+ #: ../lib/puppet/face/facts.rb:40
1019
1023
  msgid "Retrieve a node's facts."
1020
1024
  msgstr ""
1021
1025
 
1022
- #: ../lib/puppet/face/facts.rb:17
1026
+ #: ../lib/puppet/face/facts.rb:41
1023
1027
  msgid "[<node_certname>]"
1024
1028
  msgstr ""
1025
1029
 
1026
- #: ../lib/puppet/face/facts.rb:40
1030
+ #: ../lib/puppet/face/facts.rb:64
1027
1031
  msgid "Upload local facts to the puppet master."
1028
1032
  msgstr ""
1029
1033
 
1030
- #: ../lib/puppet/face/facts.rb:82
1034
+ #: ../lib/puppet/face/facts.rb:106
1031
1035
  msgid "Uploading facts for '%{node}' to '%{server}'"
1032
1036
  msgstr ""
1033
1037
 
1038
+ #: ../lib/puppet/face/facts.rb:116
1039
+ msgid "Compare Facter 3 output with Facter 4 output"
1040
+ msgstr ""
1041
+
1042
+ #: ../lib/puppet/face/facts.rb:145
1043
+ msgid "Already using Facter 4. To use `puppet facts diff` remove facterng from the .conf file or run `puppet config set facterng false`."
1044
+ msgstr ""
1045
+
1034
1046
  #: ../lib/puppet/face/generate.rb:9
1035
1047
  msgid "Generates Puppet code from Ruby definitions."
1036
1048
  msgstr ""
@@ -2708,11 +2720,11 @@ msgstr ""
2708
2720
  msgid "invalid key"
2709
2721
  msgstr ""
2710
2722
 
2711
- #: ../lib/puppet/indirector/json.rb:58
2723
+ #: ../lib/puppet/indirector/json.rb:62
2712
2724
  msgid "Could not read JSON data for %{name} %{key}: %{detail}"
2713
2725
  msgstr ""
2714
2726
 
2715
- #: ../lib/puppet/indirector/json.rb:64
2727
+ #: ../lib/puppet/indirector/json.rb:68
2716
2728
  msgid "Could not parse JSON data for %{name} %{key}: %{detail}"
2717
2729
  msgstr ""
2718
2730
 
@@ -2769,6 +2781,14 @@ msgstr ""
2769
2781
  msgid "Could not load external node results for %{name}: %{detail}"
2770
2782
  msgstr ""
2771
2783
 
2784
+ #: ../lib/puppet/indirector/report/json.rb:19 ../lib/puppet/indirector/report/yaml.rb:19
2785
+ msgid "replace_file mode: %{mode} is invalid"
2786
+ msgstr ""
2787
+
2788
+ #: ../lib/puppet/indirector/report/json.rb:31 ../lib/puppet/indirector/report/yaml.rb:31 ../lib/puppet/indirector/yaml.rb:32
2789
+ msgid "Could not save %{indirection} %{request}: %{detail}"
2790
+ msgstr ""
2791
+
2772
2792
  #: ../lib/puppet/indirector/report/processor.rb:39
2773
2793
  msgid "Report %{report} failed: %{detail}"
2774
2794
  msgstr ""
@@ -2781,14 +2801,6 @@ msgstr ""
2781
2801
  msgid "Server version %{version} does not accept reports in '%{format}', use `preferred_serialization_format=pson`"
2782
2802
  msgstr ""
2783
2803
 
2784
- #: ../lib/puppet/indirector/report/yaml.rb:19
2785
- msgid "replace_file mode: %{mode} is invalid"
2786
- msgstr ""
2787
-
2788
- #: ../lib/puppet/indirector/report/yaml.rb:31 ../lib/puppet/indirector/yaml.rb:32
2789
- msgid "Could not save %{indirection} %{request}: %{detail}"
2790
- msgstr ""
2791
-
2792
2804
  #: ../lib/puppet/indirector/request.rb:103
2793
2805
  msgid "Could not find indirection '%{indirection}'"
2794
2806
  msgstr ""
@@ -2987,8 +2999,8 @@ msgstr ""
2987
2999
  msgid "Option %{option} conflicts with existing option %{conflict} on %{face}"
2988
3000
  msgstr ""
2989
3001
 
2990
- #. TRANSLATORS 'Puppet.settings' should not be translated
2991
3002
  #. TRANSLATORS 'Puppet.settings' references to the Puppet settings options and should not be translated
3003
+ #. TRANSLATORS 'Puppet.settings' should not be translated
2992
3004
  #: ../lib/puppet/interface/action.rb:315 ../lib/puppet/interface/option_manager.rb:14
2993
3005
  msgid "Global option %{option} does not exist in Puppet.settings"
2994
3006
  msgstr ""
@@ -3344,11 +3356,11 @@ msgstr ""
3344
3356
  msgid "Resolving dependencies ..."
3345
3357
  msgstr ""
3346
3358
 
3347
- #: ../lib/puppet/module_tool/applications/installer.rb:162
3359
+ #: ../lib/puppet/module_tool/applications/installer.rb:208
3348
3360
  msgid "Preparing to install ..."
3349
3361
  msgstr ""
3350
3362
 
3351
- #: ../lib/puppet/module_tool/applications/installer.rb:165
3363
+ #: ../lib/puppet/module_tool/applications/installer.rb:211
3352
3364
  msgid "Installing -- do not interrupt ..."
3353
3365
  msgstr ""
3354
3366
 
@@ -3392,7 +3404,7 @@ msgstr ""
3392
3404
  msgid "'%{module_name}' (%{version}) requested; '%{module_name}' (%{installed_version}) already installed"
3393
3405
  msgstr ""
3394
3406
 
3395
- #: ../lib/puppet/module_tool/errors/installer.rb:16 ../lib/puppet/module_tool/errors/installer.rb:54 ../lib/puppet/module_tool/errors/installer.rb:72 ../lib/puppet/module_tool/errors/shared.rb:64 ../lib/puppet/module_tool/errors/shared.rb:106
3407
+ #: ../lib/puppet/module_tool/errors/installer.rb:16 ../lib/puppet/module_tool/errors/installer.rb:54 ../lib/puppet/module_tool/errors/installer.rb:72 ../lib/puppet/module_tool/errors/shared.rb:79 ../lib/puppet/module_tool/errors/shared.rb:121
3396
3408
  msgid "Could not install module '%{module_name}' (%{version})"
3397
3409
  msgstr ""
3398
3410
 
@@ -3422,7 +3434,7 @@ msgstr ""
3422
3434
  msgid "Could not install '%{requested_package}'"
3423
3435
  msgstr ""
3424
3436
 
3425
- #: ../lib/puppet/module_tool/errors/installer.rb:38 ../lib/puppet/module_tool/errors/shared.rb:43
3437
+ #: ../lib/puppet/module_tool/errors/installer.rb:38 ../lib/puppet/module_tool/errors/shared.rb:58
3426
3438
  msgid " No releases are available from %{source}"
3427
3439
  msgstr ""
3428
3440
 
@@ -3467,150 +3479,162 @@ msgstr ""
3467
3479
  msgid " Package attempted to install file into %{path} under %{directory}."
3468
3480
  msgstr ""
3469
3481
 
3470
- #: ../lib/puppet/module_tool/errors/shared.rb:11
3482
+ #: ../lib/puppet/module_tool/errors/shared.rb:12
3471
3483
  msgid "Could not %{action} '%{module_name}' (%{version}); no version satisfies all dependencies"
3472
3484
  msgstr ""
3473
3485
 
3474
- #: ../lib/puppet/module_tool/errors/shared.rb:16 ../lib/puppet/module_tool/errors/shared.rb:171 ../lib/puppet/module_tool/errors/upgrader.rb:58
3486
+ #: ../lib/puppet/module_tool/errors/shared.rb:17 ../lib/puppet/module_tool/errors/shared.rb:186 ../lib/puppet/module_tool/errors/upgrader.rb:58
3475
3487
  msgid "Could not %{action} module '%{module_name}' (%{version})"
3476
3488
  msgstr ""
3477
3489
 
3478
- #: ../lib/puppet/module_tool/errors/shared.rb:17
3479
- msgid " No version of '%{module_name}' can satisfy all dependencies"
3490
+ #: ../lib/puppet/module_tool/errors/shared.rb:20
3491
+ msgid " The requested version cannot satisfy one or more of the following installed modules:"
3492
+ msgstr ""
3493
+
3494
+ #: ../lib/puppet/module_tool/errors/shared.rb:22
3495
+ msgid " %{name}, installed: %{current_version}, expected: %{constraints}"
3496
+ msgstr ""
3497
+
3498
+ #: ../lib/puppet/module_tool/errors/shared.rb:25
3499
+ msgid " %{mod}, expects '%{name}': %{range}"
3500
+ msgstr ""
3501
+
3502
+ #: ../lib/puppet/module_tool/errors/shared.rb:30
3503
+ msgid " The requested version cannot satisfy all dependencies"
3480
3504
  msgstr ""
3481
3505
 
3482
3506
  #. TRANSLATORS `puppet module %{action} --ignore-dependencies` is a command line and should not be translated
3483
- #: ../lib/puppet/module_tool/errors/shared.rb:19
3484
- msgid " Use `puppet module %{action} --ignore-dependencies` to %{action} only this module"
3507
+ #: ../lib/puppet/module_tool/errors/shared.rb:34
3508
+ msgid " Use `puppet module %{action} '%{module_name}' --ignore-dependencies` to %{action} only this module"
3485
3509
  msgstr ""
3486
3510
 
3487
- #: ../lib/puppet/module_tool/errors/shared.rb:33
3511
+ #: ../lib/puppet/module_tool/errors/shared.rb:48
3488
3512
  msgid "Could not %{action} '%{module_name}'; no releases are available from %{source}"
3489
3513
  msgstr ""
3490
3514
 
3491
- #: ../lib/puppet/module_tool/errors/shared.rb:35
3515
+ #: ../lib/puppet/module_tool/errors/shared.rb:50
3492
3516
  msgid "Could not %{action} '%{module_name}'; no releases matching '%{version}' are available from %{source}"
3493
3517
  msgstr ""
3494
3518
 
3495
- #: ../lib/puppet/module_tool/errors/shared.rb:41
3519
+ #: ../lib/puppet/module_tool/errors/shared.rb:56
3496
3520
  msgid "Could not %{action} '%{module_name}' (%{version})"
3497
3521
  msgstr ""
3498
3522
 
3499
- #: ../lib/puppet/module_tool/errors/shared.rb:44
3523
+ #: ../lib/puppet/module_tool/errors/shared.rb:59
3500
3524
  msgid " Does '%{module_name}' have at least one published release?"
3501
3525
  msgstr ""
3502
3526
 
3503
- #: ../lib/puppet/module_tool/errors/shared.rb:46
3527
+ #: ../lib/puppet/module_tool/errors/shared.rb:61
3504
3528
  msgid " No releases matching '%{requested_version}' are available from %{source}"
3505
3529
  msgstr ""
3506
3530
 
3507
- #: ../lib/puppet/module_tool/errors/shared.rb:59
3531
+ #: ../lib/puppet/module_tool/errors/shared.rb:74
3508
3532
  msgid "'%{module_name}' (%{version}) requested; installation conflict"
3509
3533
  msgstr ""
3510
3534
 
3511
- #: ../lib/puppet/module_tool/errors/shared.rb:67
3535
+ #: ../lib/puppet/module_tool/errors/shared.rb:82
3512
3536
  msgid " Dependency '%{name}' (%{version}) would overwrite %{directory}"
3513
3537
  msgstr ""
3514
3538
 
3515
- #: ../lib/puppet/module_tool/errors/shared.rb:69
3539
+ #: ../lib/puppet/module_tool/errors/shared.rb:84
3516
3540
  msgid " Installation would overwrite %{directory}"
3517
3541
  msgstr ""
3518
3542
 
3519
- #: ../lib/puppet/module_tool/errors/shared.rb:73
3543
+ #: ../lib/puppet/module_tool/errors/shared.rb:88
3520
3544
  msgid " Currently, '%{current_name}' (%{current_version}) is installed to that directory"
3521
3545
  msgstr ""
3522
3546
 
3523
3547
  #. TRANSLATORS `puppet module install --ignore-dependencies` is a command line and should not be translated
3524
- #: ../lib/puppet/module_tool/errors/shared.rb:78
3548
+ #: ../lib/puppet/module_tool/errors/shared.rb:93
3525
3549
  msgid " Use `puppet module install --ignore-dependencies` to install only this module"
3526
3550
  msgstr ""
3527
3551
 
3528
3552
  #. TRANSLATORS `puppet module install --force` is a command line and should not be translated
3529
3553
  #. TRANSLATORS `puppet module install --force` is a command line and should not be translated
3530
- #: ../lib/puppet/module_tool/errors/shared.rb:81 ../lib/puppet/module_tool/errors/shared.rb:110
3554
+ #: ../lib/puppet/module_tool/errors/shared.rb:96 ../lib/puppet/module_tool/errors/shared.rb:125
3531
3555
  msgid " Use `puppet module install --force` to install this module anyway"
3532
3556
  msgstr ""
3533
3557
 
3534
- #: ../lib/puppet/module_tool/errors/shared.rb:95
3558
+ #: ../lib/puppet/module_tool/errors/shared.rb:110
3535
3559
  msgid "'%{module_name}' (%{version}) requested; Invalid dependency cycle"
3536
3560
  msgstr ""
3537
3561
 
3538
- #: ../lib/puppet/module_tool/errors/shared.rb:100
3562
+ #: ../lib/puppet/module_tool/errors/shared.rb:115
3539
3563
  msgid "You specified '%{name}' (%{version})"
3540
3564
  msgstr ""
3541
3565
 
3542
3566
  #. TRANSLATORS This message repeats as separate lines as a list under the heading "You specified '%{name}' (%{version})\n"
3543
- #: ../lib/puppet/module_tool/errors/shared.rb:103
3567
+ #: ../lib/puppet/module_tool/errors/shared.rb:118
3544
3568
  msgid "This depends on '%{name}' (%{version})"
3545
3569
  msgstr ""
3546
3570
 
3547
- #: ../lib/puppet/module_tool/errors/shared.rb:107
3571
+ #: ../lib/puppet/module_tool/errors/shared.rb:122
3548
3572
  msgid " No version of '%{module_name}' will satisfy dependencies"
3549
3573
  msgstr ""
3550
3574
 
3551
- #: ../lib/puppet/module_tool/errors/shared.rb:120
3575
+ #: ../lib/puppet/module_tool/errors/shared.rb:135
3552
3576
  msgid "Could not %{action} '%{module_name}'; module is not installed"
3553
3577
  msgstr ""
3554
3578
 
3555
- #: ../lib/puppet/module_tool/errors/shared.rb:125 ../lib/puppet/module_tool/errors/shared.rb:148 ../lib/puppet/module_tool/errors/shared.rb:189
3579
+ #: ../lib/puppet/module_tool/errors/shared.rb:140 ../lib/puppet/module_tool/errors/shared.rb:163 ../lib/puppet/module_tool/errors/shared.rb:204
3556
3580
  msgid "Could not %{action} module '%{module_name}'"
3557
3581
  msgstr ""
3558
3582
 
3559
- #: ../lib/puppet/module_tool/errors/shared.rb:126
3583
+ #: ../lib/puppet/module_tool/errors/shared.rb:141
3560
3584
  msgid " Module '%{module_name}' is not installed"
3561
3585
  msgstr ""
3562
3586
 
3563
3587
  #. TRANSLATORS `puppet module %{action} %{suggestion}` is a command line and should not be translated
3564
- #: ../lib/puppet/module_tool/errors/shared.rb:129
3588
+ #: ../lib/puppet/module_tool/errors/shared.rb:144
3565
3589
  msgid " You may have meant `puppet module %{action} %{suggestion}`"
3566
3590
  msgstr ""
3567
3591
 
3568
3592
  #. TRANSLATORS `puppet module install` is a command line and should not be translated
3569
- #: ../lib/puppet/module_tool/errors/shared.rb:132
3593
+ #: ../lib/puppet/module_tool/errors/shared.rb:147
3570
3594
  msgid " Use `puppet module install` to install this module"
3571
3595
  msgstr ""
3572
3596
 
3573
3597
  #. TRANSLATORS "module path" refers to a set of directories where modules may be installed
3574
- #: ../lib/puppet/module_tool/errors/shared.rb:143
3598
+ #: ../lib/puppet/module_tool/errors/shared.rb:158
3575
3599
  msgid "Could not %{action} '%{module_name}'; module appears in multiple places in the module path"
3576
3600
  msgstr ""
3577
3601
 
3578
- #: ../lib/puppet/module_tool/errors/shared.rb:149
3602
+ #: ../lib/puppet/module_tool/errors/shared.rb:164
3579
3603
  msgid " Module '%{module_name}' appears multiple places in the module path"
3580
3604
  msgstr ""
3581
3605
 
3582
3606
  #. TRANSLATORS This is repeats as separate lines as a list under "Module '%{module_name}' appears multiple places in the module path"
3583
- #: ../lib/puppet/module_tool/errors/shared.rb:152
3607
+ #: ../lib/puppet/module_tool/errors/shared.rb:167
3584
3608
  msgid " '%{module_name}' (%{version}) was found in %{path}"
3585
3609
  msgstr ""
3586
3610
 
3587
3611
  #. TRANSLATORS `--modulepath` is command line option and should not be translated
3588
- #: ../lib/puppet/module_tool/errors/shared.rb:155
3612
+ #: ../lib/puppet/module_tool/errors/shared.rb:170
3589
3613
  msgid " Use the `--modulepath` option to limit the search to specific directories"
3590
3614
  msgstr ""
3591
3615
 
3592
- #: ../lib/puppet/module_tool/errors/shared.rb:166
3616
+ #: ../lib/puppet/module_tool/errors/shared.rb:181
3593
3617
  msgid "Could not %{action} '%{module_name}'; module has had changes made locally"
3594
3618
  msgstr ""
3595
3619
 
3596
- #: ../lib/puppet/module_tool/errors/shared.rb:172
3620
+ #: ../lib/puppet/module_tool/errors/shared.rb:187
3597
3621
  msgid " Installed module has had changes made locally"
3598
3622
  msgstr ""
3599
3623
 
3600
3624
  #. TRANSLATORS `puppet module %{action} --ignore-changes` is a command line and should not be translated
3601
- #: ../lib/puppet/module_tool/errors/shared.rb:174
3625
+ #: ../lib/puppet/module_tool/errors/shared.rb:189
3602
3626
  msgid " Use `puppet module %{action} --ignore-changes` to %{action} this module anyway"
3603
3627
  msgstr ""
3604
3628
 
3605
- #: ../lib/puppet/module_tool/errors/shared.rb:184
3629
+ #: ../lib/puppet/module_tool/errors/shared.rb:199
3606
3630
  msgid "Could not %{action} '%{module_name}'; %{error}"
3607
3631
  msgstr ""
3608
3632
 
3609
- #: ../lib/puppet/module_tool/errors/shared.rb:190
3633
+ #: ../lib/puppet/module_tool/errors/shared.rb:205
3610
3634
  msgid " Failure trying to parse metadata"
3611
3635
  msgstr ""
3612
3636
 
3613
- #: ../lib/puppet/module_tool/errors/shared.rb:191
3637
+ #: ../lib/puppet/module_tool/errors/shared.rb:206
3614
3638
  msgid " Original message was: %{message}"
3615
3639
  msgstr ""
3616
3640
 
@@ -4201,54 +4225,54 @@ msgstr ""
4201
4225
 
4202
4226
  #. TRANSLATORS: do not translate the variable names in this error message
4203
4227
  #. TRANSLATORS: do not translate the variable names in this error message
4204
- #: ../lib/puppet/pal/pal_impl.rb:75 ../lib/puppet/pal/pal_impl.rb:173
4228
+ #: ../lib/puppet/pal/pal_impl.rb:75 ../lib/puppet/pal/pal_impl.rb:181
4205
4229
  msgid "manifest_file or code_string cannot be given when configured_by_env is true"
4206
4230
  msgstr ""
4207
4231
 
4208
- #: ../lib/puppet/pal/pal_impl.rb:221
4232
+ #: ../lib/puppet/pal/pal_impl.rb:237
4209
4233
  msgid "temporary environment name"
4210
4234
  msgstr ""
4211
4235
 
4212
4236
  #. TRANSLATORS: do not translate variable name string in these assertions
4213
- #: ../lib/puppet/pal/pal_impl.rb:226
4237
+ #: ../lib/puppet/pal/pal_impl.rb:242
4214
4238
  msgid "A block must be given to 'in_tmp_environment'"
4215
4239
  msgstr ""
4216
4240
 
4217
4241
  #. TRANSLATORS terms in the assertions below are names of terms in code
4218
- #: ../lib/puppet/pal/pal_impl.rb:280
4242
+ #: ../lib/puppet/pal/pal_impl.rb:296
4219
4243
  msgid "A block must be given to 'in_environment'"
4220
4244
  msgstr ""
4221
4245
 
4222
4246
  #. TRANSLATORS 'in_environment' is a name, do not translate
4223
- #: ../lib/puppet/pal/pal_impl.rb:285
4247
+ #: ../lib/puppet/pal/pal_impl.rb:301
4224
4248
  msgid "The environment directory '%{env_dir}' does not exist"
4225
4249
  msgstr ""
4226
4250
 
4227
- #: ../lib/puppet/pal/pal_impl.rb:308
4251
+ #: ../lib/puppet/pal/pal_impl.rb:324
4228
4252
  msgid "No directory found for the environment '%{env_name}' on the path '%{envpath}'"
4229
4253
  msgstr ""
4230
4254
 
4231
- #: ../lib/puppet/pal/pal_impl.rb:362
4255
+ #: ../lib/puppet/pal/pal_impl.rb:378
4232
4256
  msgid "Given variables must be a hash, got %{type}"
4233
4257
  msgstr ""
4234
4258
 
4235
- #: ../lib/puppet/pal/pal_impl.rb:368
4259
+ #: ../lib/puppet/pal/pal_impl.rb:384
4236
4260
  msgid "Given variable '%{varname}' has illegal name"
4237
4261
  msgstr ""
4238
4262
 
4239
- #: ../lib/puppet/pal/pal_impl.rb:372
4263
+ #: ../lib/puppet/pal/pal_impl.rb:388
4240
4264
  msgid "Given value for '%{varname}' has illegal type - got: %{type}"
4241
4265
  msgstr ""
4242
4266
 
4243
- #: ../lib/puppet/pal/pal_impl.rb:509
4267
+ #: ../lib/puppet/pal/pal_impl.rb:562
4244
4268
  msgid "Puppet Pal: %{what}"
4245
4269
  msgstr ""
4246
4270
 
4247
- #: ../lib/puppet/pal/pal_impl.rb:523
4271
+ #: ../lib/puppet/pal/pal_impl.rb:576
4248
4272
  msgid "Cannot use '%{a_term}' and '%{b_term}' at the same time"
4249
4273
  msgstr ""
4250
4274
 
4251
- #: ../lib/puppet/pal/pal_impl.rb:530
4275
+ #: ../lib/puppet/pal/pal_impl.rb:583
4252
4276
  msgid "A block must be given"
4253
4277
  msgstr ""
4254
4278
 
@@ -4961,23 +4985,23 @@ msgstr ""
4961
4985
  msgid "multi var assignment from class"
4962
4986
  msgstr ""
4963
4987
 
4964
- #: ../lib/puppet/pops/evaluator/evaluator_impl.rb:742
4988
+ #: ../lib/puppet/pops/evaluator/evaluator_impl.rb:761
4965
4989
  msgid "break() from context where this is illegal"
4966
4990
  msgstr ""
4967
4991
 
4968
- #: ../lib/puppet/pops/evaluator/evaluator_impl.rb:1222
4992
+ #: ../lib/puppet/pops/evaluator/evaluator_impl.rb:1241
4969
4993
  msgid "Can only append Array or Hash to a Hash"
4970
4994
  msgstr ""
4971
4995
 
4972
- #: ../lib/puppet/pops/evaluator/evaluator_impl.rb:1226
4996
+ #: ../lib/puppet/pops/evaluator/evaluator_impl.rb:1245
4973
4997
  msgid "An URI can only be merged with an URI or String"
4974
4998
  msgstr ""
4975
4999
 
4976
- #: ../lib/puppet/pops/evaluator/evaluator_impl.rb:1229
5000
+ #: ../lib/puppet/pops/evaluator/evaluator_impl.rb:1248
4977
5001
  msgid "Can only append Binary to a Binary"
4978
5002
  msgstr ""
4979
5003
 
4980
- #: ../lib/puppet/pops/evaluator/evaluator_impl.rb:1262
5004
+ #: ../lib/puppet/pops/evaluator/evaluator_impl.rb:1281
4981
5005
  msgid "Can only delete from an Array or Hash."
4982
5006
  msgstr ""
4983
5007
 
@@ -6800,19 +6824,19 @@ msgstr ""
6800
6824
  msgid "Mac OS X packages must specify a package source"
6801
6825
  msgstr ""
6802
6826
 
6803
- #: ../lib/puppet/provider/package/apt.rb:81
6827
+ #: ../lib/puppet/provider/package/apt.rb:85
6804
6828
  msgid "/etc/apt/sources.list contains a cdrom source; not installing. Use 'allowcdrom' to override this failure."
6805
6829
  msgstr ""
6806
6830
 
6807
- #: ../lib/puppet/provider/package/apt.rb:163 ../lib/puppet/provider/package/fink.rb:55
6831
+ #: ../lib/puppet/provider/package/apt.rb:167 ../lib/puppet/provider/package/fink.rb:55
6808
6832
  msgid "Could not find latest version"
6809
6833
  msgstr ""
6810
6834
 
6811
- #: ../lib/puppet/provider/package/apt.rb:174 ../lib/puppet/provider/package/fink.rb:66
6835
+ #: ../lib/puppet/provider/package/apt.rb:178 ../lib/puppet/provider/package/fink.rb:66
6812
6836
  msgid "Preseeding %{response} to debconf-set-selections"
6813
6837
  msgstr ""
6814
6838
 
6815
- #: ../lib/puppet/provider/package/apt.rb:178 ../lib/puppet/provider/package/fink.rb:70
6839
+ #: ../lib/puppet/provider/package/apt.rb:182 ../lib/puppet/provider/package/fink.rb:70
6816
6840
  msgid "No responsefile specified or non existent, not preseeding anything"
6817
6841
  msgstr ""
6818
6842
 
@@ -7625,69 +7649,69 @@ msgstr ""
7625
7649
  msgid "Downloaded existing certificate request for %{name} from %{server}"
7626
7650
  msgstr ""
7627
7651
 
7628
- #: ../lib/puppet/settings.rb:98
7652
+ #: ../lib/puppet/settings.rb:99
7629
7653
  msgid "New environment loaders generated from the requested section."
7630
7654
  msgstr ""
7631
7655
 
7632
- #: ../lib/puppet/settings.rb:300
7656
+ #: ../lib/puppet/settings.rb:301
7633
7657
  msgid "Attempting to initialize global default settings more than once!"
7634
7658
  msgstr ""
7635
7659
 
7636
- #: ../lib/puppet/settings.rb:500
7660
+ #: ../lib/puppet/settings.rb:501
7637
7661
  msgid "Using --configprint is deprecated. Use 'puppet config <subcommand>' instead."
7638
7662
  msgstr ""
7639
7663
 
7640
- #: ../lib/puppet/settings.rb:642
7664
+ #: ../lib/puppet/settings.rb:643
7641
7665
  msgid "Could not load %{file}: %{detail}"
7642
7666
  msgstr ""
7643
7667
 
7644
- #: ../lib/puppet/settings.rb:748
7668
+ #: ../lib/puppet/settings.rb:750
7645
7669
  msgid "Invalid setting type '%{type}'"
7646
7670
  msgstr ""
7647
7671
 
7648
- #: ../lib/puppet/settings.rb:903
7672
+ #: ../lib/puppet/settings.rb:905
7649
7673
  msgid "Unknown searchpath case: %{source_type} for the %{source} settings path element."
7650
7674
  msgstr ""
7651
7675
 
7652
- #: ../lib/puppet/settings.rb:966
7676
+ #: ../lib/puppet/settings.rb:978
7653
7677
  msgid "setting definition for '%{name}' is not a hash!"
7654
7678
  msgstr ""
7655
7679
 
7656
- #: ../lib/puppet/settings.rb:971
7680
+ #: ../lib/puppet/settings.rb:983
7657
7681
  msgid "Setting %{name} is already defined"
7658
7682
  msgstr ""
7659
7683
 
7660
- #: ../lib/puppet/settings.rb:977
7684
+ #: ../lib/puppet/settings.rb:989
7661
7685
  msgid "Setting %{name} is already using short name '%{short}'"
7662
7686
  msgstr ""
7663
7687
 
7664
- #: ../lib/puppet/settings.rb:1241
7688
+ #: ../lib/puppet/settings.rb:1253
7665
7689
  msgid "Setting %{name} is deprecated."
7666
7690
  msgstr ""
7667
7691
 
7668
7692
  #. TRANSLATORS 'puppet.conf' is a file name and should not be translated
7669
- #: ../lib/puppet/settings.rb:1246
7693
+ #: ../lib/puppet/settings.rb:1258
7670
7694
  msgid "Setting %{name} is deprecated in puppet.conf."
7671
7695
  msgstr ""
7672
7696
 
7673
- #: ../lib/puppet/settings.rb:1417
7697
+ #: ../lib/puppet/settings.rb:1435
7674
7698
  msgid "Error converting value for param '%{name}': %{detail}"
7675
7699
  msgstr ""
7676
7700
 
7677
- #: ../lib/puppet/settings.rb:1441
7701
+ #: ../lib/puppet/settings.rb:1459
7678
7702
  msgid "Could not find value for %{expression}"
7679
7703
  msgstr ""
7680
7704
 
7681
7705
  #. TRANSLATORS '$environment' is a Puppet specific variable and should not be translated
7682
- #: ../lib/puppet/settings.rb:1451
7706
+ #: ../lib/puppet/settings.rb:1469
7683
7707
  msgid "You cannot interpolate $environment within '%{setting_name}' when using directory environments."
7684
7708
  msgstr ""
7685
7709
 
7686
- #: ../lib/puppet/settings.rb:1452
7710
+ #: ../lib/puppet/settings.rb:1470
7687
7711
  msgid "Its value will remain %{value}."
7688
7712
  msgstr ""
7689
7713
 
7690
- #: ../lib/puppet/settings.rb:1483
7714
+ #: ../lib/puppet/settings.rb:1501
7691
7715
  msgid "Attempt to assign a value to unknown setting %{name}"
7692
7716
  msgstr ""
7693
7717
 
@@ -7700,38 +7724,38 @@ msgid "Invalid autosign value %{value}: must be 'true'/'false' or an absolute pa
7700
7724
  msgstr ""
7701
7725
 
7702
7726
  #. TRANSLATORS ':%{name}', ':call_hook', and ':on_write_only' should not be translated
7703
- #: ../lib/puppet/settings/base_setting.rb:15
7727
+ #: ../lib/puppet/settings/base_setting.rb:37
7704
7728
  msgid "Setting :%{name} :call_hook is nil, defaulting to :on_write_only"
7705
7729
  msgstr ""
7706
7730
 
7707
7731
  #. TRANSLATORS 'call_hook' is a Puppet option name and should not be translated
7708
- #: ../lib/puppet/settings/base_setting.rb:20
7732
+ #: ../lib/puppet/settings/base_setting.rb:42
7709
7733
  msgid "Invalid option %{value} for call_hook"
7710
7734
  msgstr ""
7711
7735
 
7712
7736
  #. TRANSLATORS ':call_hook' and ':hook' are specific setting names and should not be translated
7713
- #: ../lib/puppet/settings/base_setting.rb:77
7737
+ #: ../lib/puppet/settings/base_setting.rb:101
7714
7738
  msgid "Cannot reference :call_hook for :%{name} if no :hook is defined"
7715
7739
  msgstr ""
7716
7740
 
7717
- #: ../lib/puppet/settings/base_setting.rb:83
7741
+ #: ../lib/puppet/settings/base_setting.rb:107
7718
7742
  msgid "%{class_name} (setting '%{setting}') does not accept %{parameter}"
7719
7743
  msgstr ""
7720
7744
 
7721
- #: ../lib/puppet/settings/base_setting.rb:90
7745
+ #: ../lib/puppet/settings/base_setting.rb:114
7722
7746
  msgid "You must provide a description for the %{class_name} config option"
7723
7747
  msgstr ""
7724
7748
 
7725
- #: ../lib/puppet/settings/base_setting.rb:104
7749
+ #: ../lib/puppet/settings/base_setting.rb:128
7726
7750
  msgid "Short names can only be one character."
7727
7751
  msgstr ""
7728
7752
 
7729
7753
  #. TRANSLATORS 'deprecated' is a Puppet setting and ':completely' and ':allowed_on_commandline' are possible values and should not be translated
7730
- #: ../lib/puppet/settings/base_setting.rb:173
7754
+ #: ../lib/puppet/settings/base_setting.rb:197
7731
7755
  msgid "Unsupported deprecated value '%{deprecation}'."
7732
7756
  msgstr ""
7733
7757
 
7734
- #: ../lib/puppet/settings/base_setting.rb:174
7758
+ #: ../lib/puppet/settings/base_setting.rb:198
7735
7759
  msgid "Supported values for deprecated are ':completely' or ':allowed_on_commandline'"
7736
7760
  msgstr ""
7737
7761
 
@@ -9084,7 +9108,7 @@ msgstr ""
9084
9108
  msgid "Could not autoload %{name}: %{detail}"
9085
9109
  msgstr ""
9086
9110
 
9087
- #: ../lib/puppet/util/autoload.rb:184
9111
+ #: ../lib/puppet/util/autoload.rb:177
9088
9112
  msgid "Autoload paths cannot be fully qualified"
9089
9113
  msgstr ""
9090
9114
 
@@ -9668,19 +9692,19 @@ msgstr ""
9668
9692
  msgid "Unable to write the file %{file_path}. %{error}"
9669
9693
  msgstr ""
9670
9694
 
9671
- #: ../lib/puppet/util/posix.rb:22
9695
+ #: ../lib/puppet/util/posix.rb:29
9672
9696
  msgid "Removing any duplicate group entries"
9673
9697
  msgstr ""
9674
9698
 
9675
- #: ../lib/puppet/util/posix.rb:35
9699
+ #: ../lib/puppet/util/posix.rb:75
9676
9700
  msgid "Did not get id from caller"
9677
9701
  msgstr ""
9678
9702
 
9679
- #: ../lib/puppet/util/posix.rb:39 ../lib/puppet/util/posix.rb:64
9703
+ #: ../lib/puppet/util/posix.rb:79 ../lib/puppet/util/posix.rb:104
9680
9704
  msgid "Tried to get %{field} field for silly id %{id}"
9681
9705
  msgstr ""
9682
9706
 
9683
- #: ../lib/puppet/util/posix.rb:92 ../lib/puppet/util/posix.rb:102 ../lib/puppet/util/posix.rb:112
9707
+ #: ../lib/puppet/util/posix.rb:132 ../lib/puppet/util/posix.rb:142 ../lib/puppet/util/posix.rb:152
9684
9708
  msgid "Can only handle users and groups"
9685
9709
  msgstr ""
9686
9710