Class: Puppet::Settings::ChainedValues

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet/settings.rb

Overview

Lookup configuration setting value through a chain of different value sources.

Constant Summary collapse

ENVIRONMENT_SETTING =
"environment".freeze
ENVIRONMENT_INTERPOLATION_ALLOWED =
['config_version'].freeze

Instance Method Summary collapse

Constructor Details

#initialize(mode, environment, value_sets, defaults) ⇒ ChainedValues

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of ChainedValues.

See Also:

  • Puppet::Settings.values


1258
1259
1260
1261
1262
1263
# File 'lib/puppet/settings.rb', line 1258

def initialize(mode, environment, value_sets, defaults)
  @mode = mode
  @environment = environment
  @value_sets = value_sets
  @defaults = defaults
end

Instance Method Details

#interpolate(name) ⇒ Object

Lookup the interpolated value. All instances of ‘$name` in the value will be replaced by performing a lookup of `name` and substituting the text for `$name` in the original value. This interpolation is only performed if the looked up value is a String.



1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
# File 'lib/puppet/settings.rb', line 1292

def interpolate(name)
  setting = @defaults[name]

  if setting
    val = lookup(name)
    # if we interpolate code, all hell breaks loose.
    if name == :code
      val
    else
      # Convert it if necessary
      begin
        val = convert(val, name)
      rescue InterpolationError => err
        # This happens because we don't have access to the param name when the
        # exception is originally raised, but we want it in the message
        raise InterpolationError, "Error converting value for param '#{name}': #{err}", err.backtrace
      end

      setting.munge(val)
    end
  else
    nil
  end
end

#lookup(name) ⇒ Object

Lookup the uninterpolated value.



1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
# File 'lib/puppet/settings.rb', line 1270

def lookup(name)
  set = @value_sets.find do |value_set|
    value_set.include?(name)
  end
  if set
    value = set.lookup(name)
    if !value.nil?
      return value
    end
  end

  @defaults[name].default
end