Module: Chef::Mixin::Language

Included in:
RecipeDefinitionDSLCore, Recipe, Resource
Defined in:
lib/chef/mixin/language.rb

Defined Under Namespace

Classes: PlatformDependentValue

Instance Method Summary collapse

Instance Method Details

#data_bag(bag) ⇒ Object



145
146
147
148
149
150
151
152
# File 'lib/chef/mixin/language.rb', line 145

def data_bag(bag)
  DataBag.validate_name!(bag)
  rbag = DataBag.load(bag)
  rbag.keys
rescue Exception
  Log.error("Failed to list data bag items in data bag: #{bag.inspect}")
  raise
end

#data_bag_item(bag, item) ⇒ Object



154
155
156
157
158
159
160
161
# File 'lib/chef/mixin/language.rb', line 154

def data_bag_item(bag, item)
  DataBag.validate_name!(bag)
  DataBagItem.validate_id!(item)
  DataBagItem.load(bag, item)
rescue Exception
  Log.error("Failed to load data bag item: #{bag.inspect} #{item.inspect}")
  raise
end

#platform?(*args) ⇒ Boolean

Given a list of platforms, returns true if the current recipe is being run on a node with that platform, false otherwise.

Parameters

args

A list of platforms

Returns

true

If the current platform is in the list

false

If the current platform is not in the list



120
121
122
123
124
125
126
127
128
# File 'lib/chef/mixin/language.rb', line 120

def platform?(*args)
  has_platform = false

  args.flatten.each do |platform|
    has_platform = true if platform == node[:platform]
  end

  has_platform
end

#search(*args, &block) ⇒ Object



130
131
132
133
134
135
136
137
138
139
140
141
142
143
# File 'lib/chef/mixin/language.rb', line 130

def search(*args, &block)
  # If you pass a block, or have at least the start argument, do raw result parsing
  #
  # Otherwise, do the iteration for the end user
  if Kernel.block_given? || args.length >= 4
    Chef::Search::Query.new.search(*args, &block)
  else
    results = Array.new
    Chef::Search::Query.new.search(*args) do |o|
      results << o
    end
    results
  end
end

#value_for_platform(platform_hash) ⇒ Object

Given a hash similar to the one we use for Platforms, select a value from the hash. Supports per platform defaults, along with a single base default. Arrays may be passed as hash keys and will be expanded.

Parameters

platform_hash

A platform-style hash.

Returns

value

Whatever the most specific value of the hash is.



107
108
109
# File 'lib/chef/mixin/language.rb', line 107

def value_for_platform(platform_hash)
  PlatformDependentValue.new(platform_hash).value_for_node(node)
end