Implementation class for determining platform dependent values
Create a platform dependent value object.
platform_hash (Hash) a hash of the same structure as Chef::Platform, like this:
{
:debian => {:default => 'the value for all debian'}
[:centos, :redhat, :fedora] => {:default => "value for all EL variants"}
:ubuntu => { :default => "default for ubuntu", '10.04' => "value for 10.04 only"},
:default => "the default when nothing else matches"
}
platforms can be specified as Symbols or Strings
multiple platforms can be grouped by using an Array as the key
values for platforms need to be Hashes of the form: {platform_version => value_for_that_version}
the exception to the above is the default value, which is given as :default => default_value
# File lib/chef/mixin/language.rb, line 47 def initialize(platform_hash) @values = {} platform_hash.each { |platforms, value| set(platforms, value)} end
# File lib/chef/mixin/language.rb, line 52 def value_for_node(node) platform, version = node[:platform].to_s, node[:platform_version].to_s if @values.key?(platform) && @values[platform].key?(version) @values[platform][version] elsif @values.key?(platform) && @values[platform].key?("default") @values[platform]["default"] elsif @values.key?("default") @values["default"] else nil end end
Generated with the Darkfish Rdoc Generator 2.